Как создать производное от CWnd POP UP Window?

Я создал класс CSurfaceWnd из CWnd с помощью Class Wizard. Я пытался создать окно, но получаю ошибку.
Вот мой код создания:

    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.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector