Popup Help/Context Menuのために,全てのダイアログにOnPopupHelpが追加されていますが,全く同じOnPopupHelpを各クラスにちりばめるより以下のようにCDialogにまとめた方がプログラムサイズの減少と保守性の向上が見込まれると思います.
処理が変わるわけではないので動作には全く影響ないですけど,
それに,共通設定とタイプ別設定には適用できないのか(T_T)
CDialog.hで
virtual BOOL OnPopupHelp( WPARAM, LPARAM ); //@@@ 2002.01.07 add
virtual BOOL OnContextMenu( WPARAM, LPARAM ); //@@@ 2002.01.07 add
virtual LPVOID GetHelpIdTable(void);
---
CDialog.cppで
case WM_HELP: return OnPopupHelp( wParam, lParam );
case WM_CONTEXTMENU:return OnContextMenu( wParam, lParam );
BOOL CDlgAbout::OnPopupHelp( WPARAM wPara, LPARAM lParam )
{
HELPINFO *p = (HELPINFO *)lParam;
::WinHelp( (HWND)p->hItemHandle, m_szHelpFile, HELP_WM_HELP, (DWORD)(LPVOID)GetHelpIdTable() );
return TRUE;
}
BOOL CDlgAbout::OnContextMenu( WPARAM wPara, LPARAM lParam )
::WinHelp( m_hWnd, m_szHelpFile, HELP_CONTEXTMENU, (DWORD)(LPVOID)GetHelpIdTable() );
return TRUE;
}
---
以下の関数を各クラスに追加
DWORD* C***Dialog::GetHelpIdTable(void)
{
return p_helpids;
}