VCのようなオブジェクトの貼り付け処理について:(コントロールのグループ化)?サブクラス化

[戻る]
裕里 2007/02/23(金) 18:07:52
開発環境はVC++2005 MFC-SDIです。

本当に、何度も何度も申し訳ありません。

現在のフェーズは、コントロールのグループ化についてです。

手法としまして、
・ポップアップメニュにグループ化/グループ化解除を追加
・コントロールを複数選択している状況でグループ化
・グループ化されている状況のコントロール上でグループ化解除
を行おうとしてます。

それぞれのグループには、任意のグループIDを持たせ、それを各コントロールに
持たせることにより、グループとして認識させております。

解除時もコントロールのグループIDより解除を行おうとしているのですが、
コントロール上では、ポップアップメニューのイベントがダイアログで
拾うことが出来ません。
おそらく、コントロールをダイアログのサブクラスにする必要があるとは
薄々感じているのですが(違いますかね・・・・)




現状では、コントロール管理クラスにダイアログのポインタを渡して、
コントロールをCreateしております。

申し訳ありませんが、ご教授願えませんでしょうか?

SundayProgramer 2007/02/23(金) 23:33:20
>コントロール上では、ポップアップメニューのイベントがダイアログで
>拾うことが出来ません。
>おそらく、コントロールをダイアログのサブクラスにする必要があるとは
>薄々感じているのですが(違いますかね・・・・)

Yes。サブクラス化して、メッセージをスルーパスしてやれば出来ると思います。
それか、最初おっしゃっていたように、ビットマップ表示してやれば、面倒なメッセージ処理は
いらなくなると思います。
最終手段はフックですが、お勧めはしません。

#“ダイアログの”でなく、継承型のサブクラスです。

裕里 2007/02/26(月) 10:08:05
おはようございます。エディットモードのコントロールとして使用している
ボタンの自作クラスから、ダイアログのOnCommandを呼び出すことによって、
処理はできたのですが、やり方とし問題ないですか?
ダイアログのOnCommandをpubulicに修正して、呼び出しております。




BOOL CMyButton::OnCommand(WPARAM wParam, LPARAM lParam)
{
    ((CMainDlg*)m_parentdlg)->OnCommand(wParam,lParam);
    return CButton::OnCommand(wParam, lParam);
}

SundayProgramer 2007/02/26(月) 11:33:20
>ダイアログの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);
のが良いと思います。

裕里 2007/02/26(月) 12:48:55
[[解決]]
なるほど、早速変更させていただきます。ありがとうございます。

古いスレッドには追加発言できません。