我重载了CListCtrl类,在其中添加了CEdit类型变量(作为成员变量),因此我在CListCtrl派生类中载了OnCreate函数,可是在执行的时候发现:虽然CCListCtrl被创建了,可是OnCreate函数却得不到执行,为什么?
代码大致如下:CMyListCtrl:CListCtrl
{
    CEdit m_EditCtrl;
    .....
};CMyListCtrl::OnCreate(...){
    m_Edit.Create(...);
}CMyDialog:CDialog{
    CMyListCtrl m_ListCtrl;
    m_ListCtrl 被绑定一个ListControl上,相关代码略;
};主程序:
   CMyDialog dlg;
   dlg.DoModal();可是CMyListCtrl::OnCreate的不到执行,为什么?

解决方案 »

  1.   

    不知你OnCreate函数是怎么添加的,难道就是这样手动添加的函数吗?好象要用添加消息函数的方式添加吧,就是在类视图中右击该类名,选添加消息函数
      

  2.   

    对啊,应该将你的OnCreate与消息连接起来才有效的
      

  3.   

    WM_CREATE消息没有响应吧,应该从WM_CREATE生成函数才行。
      

  4.   

    在对话框中,如果你的listctrl不是手工代码Create而来的,比如说拖一个控件到资源上再通过DoxxChange..subclass而来,是不会触发listctrl的OnCreate的,其它类型控件也一样,你自已调用listctrl.Create(...)试试,肯定触发.
      

  5.   

    你派生的累得变量一定为指针类型然后执行Create才能执行你OnCreate()函数
      

  6.   

    为什么作为对话框的子控件就不会触发OnCreate?那我在什么地方创建该自控件中的字控件呢?
      

  7.   

    因为CreateDlg在创建对话框的时候把资源提交给windows,windows按资源定义用标准windows控件创建(不是你定义的类),在你subclass控件之前窗体已经创建完毕,所以不能触发OnCreate,但其它消息如WM_PAINT,WM_MOUSEMOVE,倒是能用,如果要OnCreate还是麻烦点,手工加Create代码吧.