MFCのSDIにダイアログバーの挿入
いくつでも挿入できます。
@リソースの挿入にて新規ダイアログを作成します。
Aダイアログのプロパティにて スタイル→(スタイル:チャイルド 境界線:しない) その他のスタイル→可視のチェックが外れている事を確認。
Bダイアログにコントロールを貼り付け作成します。
Cグローバルに近いところに変数を宣言します。
CDialogBar dlgbar;
MainFrm.cpp------------------------------------
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
〜ここにいろいろあって〜
if (!dlgbar.Create(this, IDD_DIALOG1, WS_VISIBLE|CBRS_BOTTOM, AFX_IDW_TOOLBAR)) {
//CBRS_TOP :上に配置
//CBRS_BOTTOM :下に配置
TRACE("Failed to create dialogbar\n");
return -1; // 作成に失敗
}
// TODO: ツール バーをドッキング可能にしない場合は以下の3行を削除
// してください。
〜ここにいろいろあって〜
}
------------------------------------------------
以上で表示されますがボタンはイベントが登録されないと押せません。
○コントロールの取得(複数のダイアログバーのコントロールが取得できます)
CDialogBar* pBar = (CDialogBar*)AfxGetApp()->m_pMainWnd->GetDlgItem(AFX_IDW_TOOLBAR);
pBar->GetDlgItem(IDC_EDIT1)->SetWindowText("aaa");
補足
○表示はされましたが、しかしこの状態ではボタンのイベントがありませんので、登録します。---------------
***.cpp ------------------------------
BEGIN_MESSAGE_MAP(CSditestestView, CView)
〜ここにいろいろある。〜
ON_BN_CLICKED(コントロールのID, OnBnClicked1 ) //←追加
END_MESSAGE_MAP()
***.h --------------------------------
// 生成されたメッセージ マップ関数
protected:
//{{AFX_MSG(CSditestestView)
〜ここにいろいろある。〜
afx_msg void OnBnClicked1(); //←追加
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
***.cpp ------------------------------
上で指定したイベントによって読み出されるメソッドを書き込みます。
void ***::OnBnClicked1(){
MessageBox("ok");
}
テキストボックスのイベントを拾うときは、上のように次の項目を追加します---------------------
afx_msg void OnChangeEdit1();
ON_EN_CHANGE(コントロールのID, OnChangeEdit1)
void ***::OnChangeEdit1(){
MessageBox("edit");
}
▲トップページ