ダイアログをクラス化する・・・。
ウィンドウクラスと統一してもいいが、動作が若干違うので個別にダイアログクラスを作る・・・。
と、
というように前回同様のメニューを用意・・・。
ダイアログも、
前回同様・・・。
基底クラスとなるCDialogクラスは、
m_mapDialogMapでダイアログ管理・・・。
m_pWindowは呼び出し元ウィンドウ・・・。
m_nIDTemplateはダイアログリソースID・・・。
StaticDialogProcからDynamicDialogProcを呼ぶあたり、CWindowクラスと同じ構造・・・。
OnInitDialogとOnCloseは最低限の動作を実装し、OnCommandは派生クラスでオーバーライドさせる・・・。
OnDestroyもm_mapDialogMapから不要なダイアログを消す作業があるので必要・・・。
ダイアログの表示はDoModalで、
中でDialogBoxParamを呼んでいる・・・。
第5引数にthisを渡すことで、
WM_INITDIALOGのハンドルとオブジェクトの紐付けに利用している・・・。
WM_INITDIALOG以外の時は、
マップからオブジェクトを拾って、そのオブジェクトのDynamicDialogProcを呼ぶ・・・。
DynamicDialogProcは、
各ハンドラの呼び出し・・・。
OnInitDialogはとりあえずTRUEを返すだけでいい・・・。
OnCloseは、EndDialogでダイアログを閉じる・・・。
OnDestroy時に、m_mapDialogMapから自身のオブジェクトを削除・・・。
CDialogの派生、今回表示するCAboutDialogは、
OnCommandの実装のみ・・・。IDOKの時、EndDialogでダイアログを閉じる・・・。
あとは、CMainMenuで、
CAboutDialogにリソースID、IDD_ABOUT_DIALOGなど必要なものを渡して、DoModalで表示・・・。
前回同様、ダイアログを表示できた・・・。
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/WinMain.cpp
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/Application.h
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/Application.cpp
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/MainApplication.h
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/MainApplication.cpp
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/Window.h
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/Window.cpp
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/MainWindow.h
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/MainWindow.cpp
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/MenuWindow.h
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/MenuWindow.cpp
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/Menu.h
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/Menu.cpp
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/MainMenu.h
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/MainMenu.cpp
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/Dialog.h
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/Dialog.cpp
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/AboutDialog.h
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/AboutDialog.cpp
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/resource.h
https://github.com/bg1bgst333/Test/blob/master/dialog/class_dialog/winapi/src/CDialog/CDialog/CDialog.rc