如何从CWnd POP UP窗口派生?

时间:2013-04-04 09:42:41

标签: c++ mfc cwnd

我通过类向导从CWnd创建了类CSurfaceWnd。我试图创建窗口,但收到错误。 这是我创建的代码:

    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我已经读过很多次了。 谢谢

1 个答案:

答案 0 :(得分:0)

首先,你必须检查mpWnd是否是有效对象。

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

如果mpWnd值无效,则由于WS_POPUP样式,CreateEx函数将返回0。