孫ウィンドウからのメッセージを受け取るには?

解決


duck_sheik  2006-10-10 21:51:25  No: 63268  IP: 192.*.*.*

Visual C++ 2005 で開発をしている初心者です。

CFormViewクラスのウィンドウ(親ウィンドウ)の上にリストビューを配置し、さらにその子ウィンドウとしてコンボボックスを作成しました。

//CMyView.h
class CMyView : public CFormView
{
   //...
public:
   CListCtrl m_list; //リソースエディタで作成
public:
   CComboBox m_combo; //手動で用意
}

//CMyView.cpp
void CMyView::OnInitialUpdate
{
   //...
   m_combo.Create(WS_CHILD/*その他属性*/,/*位置*/,&m_list,/*ID*/);
   //...
}

リスト項目の入力用にコンボボックスを子として配置したのですが、コンボボックスからのメッセージを受け取る方法がわかりません。プルダウンリストが閉じるのと同時に入力を確定しコンボボックスを隠す仕様にしたいのですが・・・

サブクラス化なども調べてみましたが、よくわかりませんでした。

どなたかご教授お願いいたします。

編集 削除
duck_sheik  2006-10-10 22:04:06  No: 63269  IP: 192.*.*.*

すみません環境を書いてませんでした
WindowsXP Home SP2
Visual C++ 2005 MFC Appliaction

編集 削除
Ryo  2006-10-11 13:23:36  No: 63270  IP: 192.*.*.*

●質問返し1
提示されたものだけみると
CFormView
    |子
CListCtrl
    |孫
CComboBox  
という関係ではなく

CFromView 
    ├─────┐どっちも子
CListCtrl    CComboBox
という関係にしかみえないのですが


●質問返し2
CComboBoxを、手動で用意する理由は?
特に理由がないならリソースビューから作ったほうが楽
あとは、「CBN_SELENDOK」と「ShowWindow」を駆使すればいい

編集 削除
duck_sheik  2006-10-11 15:17:42  No: 63271  IP: 192.*.*.*

返答ありがとうございます。

>CFromView 
>    ├─────┐どっちも子
>CListCtrl    CComboBox
>という関係にしかみえないのですが
m_combo.Create(WS_CHILD...,...,&m_list,...);としたのでは、m_comboはm_listの子にはならないのでしょうか?確かにm_comboはCFormViewのメンバ変数のして宣言しましたが・・・

>CComboBoxを、手動で用意する理由は?
最初はリソースビューからコンボボックスを作っていたのですが、リストビューとコンボボックスを重ねて使うためにマウス処理が競合してしまい(コンボボックスが操作できない)、それを回避するため二つを親子関係にすることを考えました。

とりあえずCComboBoxのメッセージハンドラをオーバーライドすることで解決しましたので、解決済みチェックを入れておきます。お騒がせしました。

編集 削除