是这样的,我子类化了一个static控件,这个控件是用资源编辑器放上去的,我想在它初始化的时候干点事情,可是
case WM_CREATE:
MessageBox(NULL, "WM_INITDIALOG", "WM_INITDIALOG", MB_OK);
break;
或者
case WM_INITDIALOG:
MessageBox(NULL, "WM_INITDIALOG", "WM_INITDIALOG", MB_OK);
break;
它都不响应,应该怎么来做呢?是什么消息啊?

解决方案 »

  1.   

    你是在他创建后才改变他的窗口函数,你当然不可能得到wm_create的消息了.你可以用超类化来做.
    getclassinfo得到static的窗口类信息.做一些修改(如修改窗口函数地址,修改类名)后再注册一个窗口类,然后用这个新类的类名来生成窗口.
      

  2.   

    楼上的谢谢了
    我是在父窗口的WM_INITDIALOG中子类化的
    应该在什么时候来子类化可以赶在创建之前呢?
      

  3.   

    是不是只有在CreateWindow的时候子类化才行吗?
      

  4.   

    上面已经说了,子类化是不可能得到wm_create消息的.
    你可以在对话框生成之前注册新窗口类,然后在对话框资源模板中用custom control为你的新窗口提供一个占位符.