開発環境はVC++2005 MFC-SDIです。
本当に、何度も何度も申し訳ありません。
現在のフェーズは、コントロールのグループ化についてです。
手法としまして、
・ポップアップメニュにグループ化/グループ化解除を追加
・コントロールを複数選択している状況でグループ化
・グループ化されている状況のコントロール上でグループ化解除
を行おうとしてます。
それぞれのグループには、任意のグループIDを持たせ、それを各コントロールに
持たせることにより、グループとして認識させております。
解除時もコントロールのグループIDより解除を行おうとしているのですが、
コントロール上では、ポップアップメニューのイベントがダイアログで
拾うことが出来ません。
おそらく、コントロールをダイアログのサブクラスにする必要があるとは
薄々感じているのですが(違いますかね・・・・)
現状では、コントロール管理クラスにダイアログのポインタを渡して、
コントロールをCreateしております。
申し訳ありませんが、ご教授願えませんでしょうか?
>コントロール上では、ポップアップメニューのイベントがダイアログで
>拾うことが出来ません。
>おそらく、コントロールをダイアログのサブクラスにする必要があるとは
>薄々感じているのですが(違いますかね・・・・)
Yes。サブクラス化して、メッセージをスルーパスしてやれば出来ると思います。
それか、最初おっしゃっていたように、ビットマップ表示してやれば、面倒なメッセージ処理は
いらなくなると思います。
最終手段はフックですが、お勧めはしません。
#“ダイアログの”でなく、継承型のサブクラスです。
おはようございます。エディットモードのコントロールとして使用している
ボタンの自作クラスから、ダイアログのOnCommandを呼び出すことによって、
処理はできたのですが、やり方とし問題ないですか?
ダイアログのOnCommandをpubulicに修正して、呼び出しております。
BOOL CMyButton::OnCommand(WPARAM wParam, LPARAM lParam)
{
((CMainDlg*)m_parentdlg)->OnCommand(wParam,lParam);
return CButton::OnCommand(wParam, lParam);
}
>ダイアログのOnCommandをpubulicに修正して、呼び出しております。
>BOOL CMyButton::OnCommand(WPARAM wParam, LPARAM lParam)
>{
> ((CMainDlg*)m_parentdlg)->OnCommand(wParam,lParam);
> return CButton::OnCommand(wParam, lParam);
>}
アクセス制限は変えないほうが良いと思います。
OnCommand を呼び出すなら、
((CMainDlg*)m_parentdlg)->OnCommand(wParam,lParam);
の部分を
m_parentdlg->PostMessage(WM_COMMAND, wParam, lParam);
のが良いと思います。
なるほど、早速変更させていただきます。ありがとうございます。