How Create derived from CWnd POP UP Window?

我的未来我决定 提交于 2020-01-06 23:52:04

问题


I created class CSurfaceWnd from CWnd by Class Wizard. I tried to create window but getting error. That's my code of creating:

    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);

How can You see I'm creating pop up window that's why I'm using CreateEx. I have registered class and in debug mode I see a number of new class in m_NameClass. But CreateEx returned false. Please help me. Probably you will see some error that I can't see.Please Don't send me to MSDN I have read it a lot of times. Thank you


回答1:


First of all, you have to check whether mpWnd is valid object.

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

If mpWnd is invalid value, CreateEx function will return 0 because of WS_POPUP style.



来源:https://stackoverflow.com/questions/15807725/how-create-derived-from-cwnd-pop-up-window

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!