我首先使用以下的函数对窗口进行注册;WNDCLASS   wc; 
wc.style   =   CS_HREDRAW   |   CS_VREDRAW; 
wc.lpfnWndProc   =   NULL;     //这里的窗口过程函数怎么制定? 
wc.cbClsExtra   =   0; 
wc.cbWndExtra   =   0; 
wc.hInstance   =   AfxGetInstanceHandle(); 
wc.hIcon   =   NULL; 
wc.hCursor   =   NULL; 
wc.hbrBackground   =   NULL; 
wc.lpszMenuName   =   NULL; 
wc.lpszClassName   =   _T ("MyWnd "); 
ATOM am=RegisterClass(&wc); 在使用以下函数创建窗口:
1..   BOOL bflag=m_myWnd1.CreateEx(0,_T ("MyWnd "),_T(""),WS_POPUPWINDOW|WS_VISIBLE|WS_OVERLAPPEDWINDOW,CRect(100,50,500,400),this,1);
2..  BOOL bflag=m_myWnd1.CreateEx(0,_T ("MyWnd "),_T(""),WS_POPUPWINDOW|WS_VISIBLE|WS_OVERLAPPEDWINDOW,CRect(100,50,500,400),this,0);
 
为什么bflag始终显示是0呢?
创建窗口不成功
CreateEx();函数中倒数第二个参数nID为0 和非零有什么区别?望各位贤能人士给予解答。

解决方案 »

  1.   

    nID是为了区别每个窗口,不能是0,每个窗口必须得有一个唯一的ID才行.包括控件也有一个唯一的ID
      

  2.   

    你是使用了这个构造函数:
    BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, LPVOID lpParam = NULL);pParentWndThe parent window.nIDThe ID of the child window.
    你自己指定一个不和其他窗口重复的ID
      

  3.   

    比如MSDN例子:
    void CMyDlg::OnCreateStatic() 
    {
       CWnd* pWnd = new CWnd;
       pWnd->Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE,
           CRect(0, 0, 20, 20), this, 1234);
    }
      

  4.   

    m_myWnd1就是一个简单的继承与CWnd的一个窗口类