2013-04-04 65 views
0

我通過類嚮導從CWnd創建了類CSurfaceWnd。我試圖創建窗口,但得到錯誤。 這是我創建的代碼:如何從CWnd彈出窗口創建派生?

if(!m_pSurfaceWnd) 
    { 
     CString m_NameClass = AfxRegisterWndClass(
      CS_VREDRAW | CS_HREDRAW, 
      ::LoadCursor(NULL, IDC_ARROW), 
      (HBRUSH) ::GetStockObject(WHITE_BRUSH), 
      ::LoadIcon(NULL, IDI_APPLICATION)); 
    m_pSurfaceWnd = new CSurfaceWnd; 

    CRect rcTemp; 
    GetWindowRect(rcTemp); 

    VERIFY(m_pSurfaceWnd->CreateEx(WS_EX_CLIENTEDGE, m_NameClass, NULL, WS_POPUP | WS_VISIBLE, rcTemp, mpWnd, 1)); 

    //DWORD dw =GetLastError(); 

    m_pSurfaceWnd->ShowWindow(SW_SHOW); 
} 
else 
    m_pSurfaceWnd->ShowWindow(SW_SHOW); 

你怎麼能看到我創建彈出窗口,這就是爲什麼我使用CreateEx。我已經註冊了類,並且在調試模式下,我在m_NameClass中看到了許多新類。但是CreateEx返回false。 請幫幫我。可能你會看到一些我看不到的錯誤。請不要將我發送給MSDN我已經閱讀了很多次。 謝謝

回答

0

首先,你必須檢查mpWnd是否是有效的對象。

BOOL isValid = ::IsWindow(mpWnd->GetSafeHwnd()); 

如果mpWnd是無效值,CreateEx函數將返回0,因爲WS_POPUP樣式。