色々後付でとんでもないことになっている.Visual StudioのClassViewにあるような隠したり固定したり外したりできるウィンドウを提供する.
ソースを見ると直接な方法でがんばってはいる.マウスがヒットしただとか.AutoHideモードであるかだとか.
派生は下記の通り.
CWnd -> CBasePane -> CPane -> CDockablePane -> CPaneDialog
ソースを見ると直接な方法でがんばってはいる.マウスがヒットしただとか.AutoHideモードであるかだとか.
派生は下記の通り.
CWnd -> CBasePane -> CPane -> CDockablePane -> CPaneDialog
- リソースにダイアログを作成し,Add ClassをしてもCPaneDialogは選べない.
- OnInitDialogがない
- ダイアログ上のコントールがhandlerをもっていないとDisableになるというおせっかい仕様だが,CPaneDialog派生クラス上でハンドラーを設定してもDisableのままである.
- 色々,オーバーライドやメッセージハンドラーなどの追加がIDE上でうまくいかない.
理由はしらないがLRESULT HandleInitDialogを使用する.
CPaneDialogは virtual LRESULT HandleInitDialog(WPARAM wparam, LPARAM lparam) を持っているがIDE上のオーバーライドには表示されないため,
手入力する必要がある.メッセージマップへの登録はON_MESSAGE(WM_INITDIALOG, &CHogeDlg::HandleInitDialog)とする.
CPaneDialogは virtual LRESULT HandleInitDialog(WPARAM wparam, LPARAM lparam) を持っているがIDE上のオーバーライドには表示されないため,
手入力する必要がある.メッセージマップへの登録はON_MESSAGE(WM_INITDIALOG, &CHogeDlg::HandleInitDialog)とする.
問答無用でコントロールを有効にする(問答無用も普通だが)方法.
//HogePaneDialog.h
class CHogePaneDialog : public CPaneDialog
{
//追加
virtual void OnUpdateCmdUI(class CFrameWnd *pTarget, int bDisableIfNoHndler);
};
//HogePaneDialog.cpp
void CHogePaneDialog::OnUpdateCmdUI(class CFrameWnd *pTarget, int bDisableIfNoHndler)
{
CPaneDialog::OnUpdateCmdUI(pTarget, FALSE );
}

コメントをかく