VS2005 + MFCで開発しています。
リストボックスをサブクラス化して、ドラッグ処理を行えるリストボックス、MyListBoxを作りました。
次にMyListBoxで選択が変更された場合のイベントを処理しようと思い、選択変更時のイベントハンドラをMyListBoxに追加したのですが、イベントが来ません。
選択が変更された場合などの、もとからあるイベントはサブクラスしたクラスに追加してはいけないのでしょうか?
この場合、どういう風にソースを書くのが正しいのでしょうか?
分かる方がいましたら、教えてください。
よろしくお願いします。
どのようにして既存のListBoxからサブクラス化していますか?
ウィザードで、ダイアログ(かなにか)のメンバ変数としてCListBoxを設置しましたか?
それとも、手動でおいて、OnInitDialogあたりでSubclassDlgItemとかのメソッドで
結び付けていますか?
訂正
>メンバ変数としてCListBoxを設置しましたか?
メンバ変数としてMyListBoxを設置しましたか?
Blueさん、返信ありがとうございます。
>どのようにして既存のListBoxからサブクラス化していますか?
手動でおいて、OnInitDialogでSubclassDlgItem使い結び付けています。
では
>ドラッグ処理
はサブクラス化したほうでできているのですね?
>選択変更時のイベントハンドラ
は何をハンドリングしましたか?
ドラッグ処理は、サブクラス化した方で動作しています。
選択変更時は、LBN_SELCHANGEをハンドリングしています。
おかしいですね。
BEGIN_MESSAGE_MAP(MyListBox, CListBox)
//{{AFX_MSG_MAP(MyListBox)
ON_CONTROL_REFLECT(LBN_SELCHANGE, OnSelchange)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
みたいな記述はありますよね?(VC6のコードなんで若干違うかもしれないけど)
>みたいな記述はありますよね?(VC6のコードなんで若干違うかもしれないけど)
メッセージマップにON_LBN_SELCHANGEを使っていて、
ON_CONTROL_REFLECTに変更することで、ちゃんと動作することができました。
ほんとうにありがとうございました。
ツイート | ![]() |