Как показать окно перед обработкой в ​​MFC - PullRequest
0 голосов
/ 29 сентября 2010

Как мне сделать окно видимым перед обработкой?

Я пытаюсь сделать что-то вроде этого:

void CMyClass::OnButton1Clicked()
{
 CString class_str = AfxRegisterWndClass(CS_VREDRAW | CS_HREDRAW, ::LoadCursor(NULL,IDC_ARROW),(HBRUSH)::GetStockObject(WHITE_BRUSH),::LoadIcon(NULL, IDI_APPLICATION));
 CWnd* wnd = new CWnd();
 wnd->Create(class_str,"Test",WS_CHILD | WS_VISIBLE | WS_BORDER, CRect(0,0,100,100), AfxGetMainWnd(), 1432);

 //AfxMessageBox("test"); // <- if this is executed wnd gets visible before sleep()

 Sleep(5000);  //this would be processing

 wnd->DestroyWindow();
 delete wnd;

 return;
}

Окно не отображается вообще.Я пытался отобразить его в потоке пользовательского интерфейса, но он также не отображается.Если я выполняю цикл обработки сообщений до тех пор, пока не будет создано окно, оно появляется, но через некоторое время основной цикл обработки сообщений подтверждает это.

Я знаю, что это должно быть сделано не так, а обработано в рабочем потоке, но с текущейкод, с которым я работаю, потребует слишком больших изменений.

1 Ответ

2 голосов
/ 29 сентября 2010

Отказ от ответственности: я не знаю MFC, но я знаю Windows API, на основе которого был построен MFC.

Возможно, вам нужно вызвать функцию ShowWindow ().Кроме того, вы обрабатываете сообщение WM_CREATE?Если это так, возможно, вы возвращаете неправильное значение.

Если вышесказанное не относится или не имеет смысла, не обращайте внимания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...