派生了一个Edit类,然后在一个对话框上放置一个此控件,跟踪调试的时候发现CMyEdit::PreCreate和CMyEdit::Create函数体根本没有执行.而其余重载的函数都可正常执行,请问这是为什么?怎么样能让这两个函数起作用?或者还有别的什么函数可以代替吗?(我就是想在窗体创建后对它进行一些设置)

解决方案 »

  1.   

    不太可能吧,是不是函数名字,或者参数形式错误?================高举那个,向星星挺进========================================
    http://www.betajin.com/alphasun/index.htm
    DocWizard C++程序文档自动生成工具 | Wave OpenGL 水波与动模拟和显示
      

  2.   

    因为 DLL 的控件初始化方法和一般情况不一样,EDIT 是 Dialog 创建过程按模板生成的,然后再通过 SubclassWindow 和你指定的控件相关联,所以并没都调用 Create / PreCreateWindow / OnCreate ,这种情况下应该重载 PreSubclassWindowvoid CWnd::PreSubclassWindow( )
    {
    }
      

  3.   

    不要在对话框上放置一个此控件,需要自己Create这个Edit派生类。在Dialog的OnCreate中加入:
    CMyEdit MyEdit;
    CRect rect(20,20,100,50);
    MyEdit.Create("***", WS_CHILD|WS_VISIBLE, rect, this, IDC_EDIT_CONTROL);
      

  4.   

    thx In355Hz(好象一条狗)!还有个问题,我在CMyEdit::PreSubClassWindow中发送一条消息后,发现无法在WindowProc中截获此消息,但此消息又确实生效了(如果我从主对话框向控件发送此消息的话,则此消息可被截获)请问这个可以解决吗?
      

  5.   

    CMyEdit::PreSubClassWindow 执行的时候 hWnd 代表的控件还没有被 CMyEdit 子类化(用 CMyEdit 的 WindowProc 取代窗口类 "EDIT" 的默认 WindowProc),所以此时 CMyEdit::WindowProc 截获不到消息。