一些初始化需要在窗口建立之后进行,比如:
CDialog可以在OnInitDialog中
CView可以在OnInitialUpdate中
但是象CListCtrl,CButton有没有相应的函数呢?加到哪呢?

解决方案 »

  1.   

    如果是子窗体可以添加Oninitial
      

  2.   

    回1楼:int CMyComboBox::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
    if (CComboBox::OnCreate(lpCreateStruct) == -1)
    return -1;

    // TODO: Add your specialized creation code here
    AfxMessageBox("44");
    //AddString("sssss");

    return 0;
    }
    并不执行OnCreate啊?什么条件下它指向呢?
      

  3.   

    没有WM_CREATE可以重载PreSubclassWindow函数。
      

  4.   

    试一下
    对于CComboBox的派生类CMyComboBox:静态创建,执行PreSubclassWindow
    动态创建,执行OnCreate有没有统一的方法啊?
    to 2楼:
    我怎么没找到Oninitial
      

  5.   

    SHOW_WINDOWS时似乎也可以.
    非CDialog是没有Oninitial的
      

  6.   

    静态创建,执行PreSubclassWindow 
    动态创建,执行OnCreate
    =======================
    什么是静态创建和动态创建?
      

  7.   

    以vc6.0 CButton为例:静态创建:
    拉入一个按钮,然后用向导为这个按钮建立个与之关量的控件变量
    动态创建:
    CButton b;
    b.Create(......);
      

  8.   

    控件初始化在所在的窗体类的OnInitDialog中就可以初始化了
      

  9.   

    如果是动态创建的,可以用:WM_CREATE如果是在资源编辑器画上去的,可以用:PreSubclassWindow
      

  10.   

    总结:
    看来没有统一方法.
    静态创建,在PreSubclassWindow 初始化
    动态创建,在OnCreate 初始化;放在OnShowWindow似乎也可或者定义一个init()函数,将这个函数在父类的OnInitDialog或者OnInitialUpdate中调用。麻烦点。