CDialog


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;
	}
}
TOP

メニューのON_UPDATE_COMMAND_UI機能を有効化する。

ON_UPDATE_COMMAND_UI機能が働かなく、常にメニューが有効化状態になってしまうことを回避する。
参考URL
TOP

ダイアログにステータスバーをつける。

メンバ変数を追加する。
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);
TOP

ダイアログにメニューをつける。

リソースエディタでメニューを作成する。
ダイアログのプロパティで、作成したメニューのIDを指定する。
TOP

最大化最小化ボタン有効化

プロパティにおいて、上記箇所を「TRUE」にする。
TOP

ダイアログ上をドラッグすることで、ダイアログを移動可能にする

TOP

OnCreate()/PreCreateWindow()は呼ばれない

したがって、ダイアログで拡張ウィンドウスタイルを指定した場合、OnInitDialog()内で以下のように記述する。
例)半透明化ウィンドウ設定の場合
DWORD dwStyle = ::GetWindowLong(m_hWnd, GWL_EXSTYLE);
::SetWindowLong(m_hWnd, GWL_EXSTYLE, dwStyle | WS_EX_LAYERED);
TOP

CDialog上のコントロールとの関連付け

DoDataExchange()関数内だけでなく、SubclassDlgItem()を使用することによっても関連付けはできる。
TOP

CDialog上のコントロール(メンバ変数)におけるデータ設定・取得

UpdateData()を用いる。引数は、データを取得するときに「TRUE」、設定するときに「FALSE」とする。

UpdateData(TRUE);

//
// メンバ変数に対するデータ設定・取得処理
//

UpdateData(FALSE); // TRUEすると、設定されません!

TOP

ダイアログの初期処理

OnInitDialog()をオーバーライドし、その中でダイアログ上のコントロール初期化処理等を行う。
TOP

ダイアログの背景色を取得する。

ダイアログの背景色は、システムの設定に依るので、システムに問い合わせて、現在の背景色を取得する必要がある。
DWORD bkColor = ::GetSysColor(COLOR_3DFACE);
TOP

ダイアログのリサイズ化

ダイアログの下記のプロパティに変更する。
TOP

コメント

名前:
コメント:
TOP

最終更新:2010年10月04日 00:54
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。