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*/);
//...
}
リスト項目の入力用にコンボボックスを子として配置したのですが、コンボボックスからのメッセージを受け取る方法がわかりません。プルダウンリストが閉じるのと同時に入力を確定しコンボボックスを隠す仕様にしたいのですが・・・
サブクラス化なども調べてみましたが、よくわかりませんでした。
どなたかご教授お願いいたします。
すみません環境を書いてませんでした
WindowsXP Home SP2
Visual C++ 2005 MFC Appliaction
●質問返し1
提示されたものだけみると
CFormView
|子
CListCtrl
|孫
CComboBox
という関係ではなく
CFromView
├─────┐どっちも子
CListCtrl CComboBox
という関係にしかみえないのですが
●質問返し2
CComboBoxを、手動で用意する理由は?
特に理由がないならリソースビューから作ったほうが楽
あとは、「CBN_SELENDOK」と「ShowWindow」を駆使すればいい
返答ありがとうございます。
>CFromView
> ├─────┐どっちも子
>CListCtrl CComboBox
>という関係にしかみえないのですが
m_combo.Create(WS_CHILD...,...,&m_list,...);としたのでは、m_comboはm_listの子にはならないのでしょうか?確かにm_comboはCFormViewのメンバ変数のして宣言しましたが・・・
>CComboBoxを、手動で用意する理由は?
最初はリソースビューからコンボボックスを作っていたのですが、リストビューとコンボボックスを重ねて使うためにマウス処理が競合してしまい(コンボボックスが操作できない)、それを回避するため二つを親子関係にすることを考えました。
とりあえずCComboBoxのメッセージハンドラをオーバーライドすることで解決しましたので、解決済みチェックを入れておきます。お騒がせしました。