| ■ ビットマップボタンの作成 |
| ビットマップ貼付けタイプのボタンの作成方法 1) エディターでボタンを作成し、スタイルのビットマップをチェックする. 2) ボタンにサイズを合わせたビットマップを作成しIDを付け登録する. 3) クラスウィザードで1)のボタンをコントロールとして変数を作成する. 4) 2)のビットマップ用のCBitmapのメンバー変数を作成する.(ローカル変数では不可) 5) ダイアログ上の場合、OnInitDialog内で4)の変数のLoadBitmapで2)のIDを読込む. 6) 3)の変数の SetBitmapで 4)のビットマップ変数を読込む |
| ■ 複数のボタンイベントを一つの関数で処理(マニュアルより抜粋) |
| ダイアログ上などで、ボタンが複数あり、その処理がほとんど同じで switch文で行いたいような場合があります。 このような場合、クラスウィザードで、ボタン の イベント を一つの関数にすることはできます。 しかし、その処理関数では、どのボタンが押されたの判別がつきません。 その場合には、OnCommand をオーバーライドして、そこで押したボタンのIDを メンバ変数などに保存しておけば、判別が付きます。 例: BOOL CMyDlg::OnCommand(WPARAM wParam, LPARAM lParam)上記の場合、m_SelectButtonにボタンのIDが入ります。 この後、共通のボタン処理ルーチンでswitch文などを使って処理可能です。 |
| ■ ファイルダイアログのカスタマイズ (マニュアルより抜粋) |
| ファイルダイアログのカスタマイズをする最も簡単な方法は 次のような手順になり ます。 1. CFileDialog の派生クラスをつくる。 2. ダイアログのテンプレートを MSVC\SAMPLES\COMMDLG\FILEOPEN.DLG から自分のリソースのディレクトリにコピーし、.RC ファイルにそのファイルをインク ルードする。 3. カスタムダイアログテンプレート用に dlgs.h をインクルードする。 4. AppStudio で FILEOPENORD という名前のダイアログリソースをカスタマイズの 対象にする。 5. カスタマイズ用のファイルダイアログを呼び出す前にテンプレートとインスタンス を設定する。 |
| ■ リストコントロールの選択変更 |
| リストコントロールでアイテムの選択変更をプログラムで行うには @選択するには listctrl.SetItemState( nitem, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); A選択を取り消すには listctrl.SetItemState( nitem, ~LVIS_SELECTED, LVIS_SELECTED); |
| ■ リストコントロールの指定項目を可視領域に移動 |
| リストコントロールで指定したアイテムを見える位置にスクロールするには listctrl.EnsureVisible( nitem, FALSE); |
| ■ リストコントロールで選択アイテム番号取得 |
| リストコントロールで現在選択されているアイテムの番号を取得するには、以下のように行う。 nitem = listctrl.GetNextItem( -1, LVNI_ALL | LVNI_SELECTED); nitemが-1ならば選択アイテム無し 複数選択可能なリストの場合 do { nitem = listctrl.GetNextItem( nitem, LVNI_ALL | LVNI_SELECTED); ......... } while( nitem != -1) |
| ■ ダイアログ上でアクセラレータキーを使えるようにするには |
| @アクセラレータエディターでアクセラレータを作成する(例:IDR_ACCELERATOR1) A以下のメンバ変数を追加 HACCEL m_hAccel;BOnInitDialog()に以下のコードを追加する m_hAccel = ::LoadAccelerators( AfxGetResourceHandle(), MAKEINTRESOURCE( IDR_ACCELERATOR1));CPreTranslateMessageメッセージ関数を追加して以下のコードを追加する if ( WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST)
if ( m_hAccel && ::TranslateAccelerator( m_hWnd, m_hAccel, pMsg))
return TRUE;
|
| ■ スピンボタンで上方向で加算、下方向で減算にする |
| デフォルトのスピンボタンは下方向で加算になっているこれを逆にするには OnInitDialogで以下の処理でSetRange関数を追加する。 ( ( CSpinButtonCtrl*)GetDlgItem( IDC_SPIN1))->SetRange( 0, 99); 引数は、変更する数の範囲 |