我自己写了一个用于绘图的类,从CWnd继承的,把它作为别的对话框的子窗口,用
Create(...)创建,这样用Spy++检查类名为AfxWnd42,我想改变一下类名,该怎样实现?

解决方案 »

  1.   

    在precreatewindow方法中注册一个新类.
      

  2.   

    在precreatewindow方法中注册一个新类.
    试一试吧!
      

  3.   

    如果不知道怎么用,去查MSDN,嘻嘻……
      

  4.   

    在PreCreateWindow里注册一个新类
    PS:请注意该函数会被调用两次
      

  5.   

    修改CMainFrame:
    BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
    {
    if( !CMDIFrameWnd::PreCreateWindow(cs) )
    return FALSE;
    // TODO: Modify the Window class or styles here by modifying
    //  the CREATESTRUCT cs static BOOL bCreate = FALSE;
    if(bCreate)
    {
    WNDCLASS wndcls;
    ::GetClassInfo(AfxGetInstanceHandle(), "AfxMDIFrame42d", &wndcls);
    wndcls.lpszClassName = "MD.kvls.20040714";
    AfxRegisterClass(&wndcls); cs.lpszClass = "MD.kvls.20040714";
    } bCreate = !bCreate; return TRUE;
    }
      

  6.   

    按照kvls(冰茶)的方法问题得到解决。
    不过我是在对话框中加载这个类,系统只调用一次PreCreateWindow。
    PreCreateWindow中代码如下:WNDCLASS wndcls;
    GetClassInfo(AfxGetInstanceHandle(), "Static", &wndcls);
    wndcls.lpszClassName = "JLA.IMAGE";
    AfxRegisterClass(&wndcls);cs.lpszClass = "JLA.IMAGE";return CWnd::PreCreateWindow(cs);