2013-04-04 64 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样式。