読者です 読者をやめる 読者になる 読者になる

CDialog::DoModal

CDialog::DoModalは、モーダルダイアログを表示するメンバ関数・・・。

CDialog::DoModal

今回は、ダイアログ上でクリックしたら、DoModalの戻り値としてIDOKを返し、閉じるボタンが押したら、IDCANCELを返す・・・。
また、その辺の処理を実装するに当たって、CDialogを継承した派生クラスCDialog_を定義する・・・。

CDialog_.hは、

基底クラスCDialogのコンストラクタに任せるには、リソースIDを渡さなければならないので、

nIDTemplateをそのまま渡して、派生クラス側のコンストラクタに特に処理は実装しない・・・。

IDOKを返すOnLButtonDown、IDCANCELを返すOnCloseを用意・・・。

CDialog_.cppにて、

OnLButtonDown、つまり左クリックされたら、IDOKでEndDialogを呼ぶ・・・。

OnClose、つまり閉じるボタンで閉じられたら、IDCANCELでEndDialogを呼ぶ・・・。

メッセージマクロを忘れずに・・・。

あとは、CFrameWnd_.cppにて、

CDialog_オブジェクトdlg_にIDD_DIALOGを渡し、

DoModalの戻り値がIDOKなら"OK"、IDCANCELなら"キャンセル"と表示する・・・。

f:id:BG1:20150615130607p:plain

Item1-1をクリック・・・。

f:id:BG1:20150615130648p:plain

ダイアログ上の真ん中あたりをクリック・・・。

f:id:BG1:20150615130725p:plain

この場合は"OK"、

f:id:BG1:20150615130745p:plain

閉じるボタンを押すと、

f:id:BG1:20150615130801p:plain

"キャンセル"と出る・・・。

Sample/CWinApp_.h at master · bg1bgst333/Sample · GitHub
Sample/CWinApp_.cpp at master · bg1bgst333/Sample · GitHub
Sample/CFrameWnd_.h at master · bg1bgst333/Sample · GitHub
Sample/CFrameWnd_.cpp at master · bg1bgst333/Sample · GitHub
Sample/CDialog_.h at master · bg1bgst333/Sample · GitHub
Sample/CDialog_.cpp at master · bg1bgst333/Sample · GitHub
Sample/resource.h at master · bg1bgst333/Sample · GitHub
Sample/DoModal.rc at master · bg1bgst333/Sample · GitHub