Enter&Escキーを押下しても、閉じないようにする。
BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
if (WM_KEYDOWN == pMsg->message)
{
switch (pMsg->wParam)
{
case VK_RETURN:
case VK_ESCAPE:
return FALSE;
default:
break;
}
}
メニューのON_UPDATE_COMMAND_UI機能を有効化する。
ON_UPDATE_COMMAND_UI機能が働かなく、常にメニューが有効化状態になってしまうことを回避する。
参考URL
ダイアログにステータスバーをつける。
メンバ変数を追加する。
CStatusBar m_statusBar;
OnInitDialog()
if (!m_statusBar.Create(this))
{
MessageBox (_T ("CStatusBar::Create failed"));
}
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
OnSize()
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
ダイアログにメニューをつける。
リソースエディタでメニューを作成する。
ダイアログのプロパティで、作成したメニューのIDを指定する。
最大化最小化ボタン有効化
プロパティにおいて、上記箇所を「TRUE」にする。
ダイアログ上をドラッグすることで、ダイアログを移動可能にする
OnCreate()/PreCreateWindow()は呼ばれない
したがって、ダイアログで拡張
ウィンドウスタイルを指定した場合、OnInitDialog()内で以下のように記述する。
例)半透明化ウィンドウ設定の場合
DWORD dwStyle = ::GetWindowLong(m_hWnd, GWL_EXSTYLE);
::SetWindowLong(m_hWnd, GWL_EXSTYLE, dwStyle | WS_EX_LAYERED);
CDialog上のコントロールとの関連付け
DoDataExchange()関数内だけでなく、SubclassDlgItem()を使用することによっても関連付けはできる。
CDialog上のコントロール(メンバ変数)におけるデータ設定・取得
UpdateData()を用いる。引数は、データを取得するときに「TRUE」、設定するときに「FALSE」とする。
UpdateData(TRUE);
//
// メンバ変数に対するデータ設定・取得処理
//
UpdateData(FALSE); // TRUEすると、設定されません!
ダイアログの初期処理
OnInitDialog()をオーバーライドし、その中でダイアログ上の
コントロールの
初期化処理等を行う。
ダイアログの背景色を取得する。
ダイアログの背景色は、システムの設定に依るので、システムに問い合わせて、現在の背景色を取得する必要がある。
DWORD bkColor = ::GetSysColor(COLOR_3DFACE);
ダイアログのリサイズ化
ダイアログの下記のプロパティに変更する。
コメント
最終更新:2010年10月04日 00:54