如何在MFC中处理之前显示窗口

时间:2010-09-29 12:25:54

标签: mfc

如何在处理前看到一个窗口?

我正在尝试做这样的事情:

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

窗口根本没有显示。我已经尝试在UI线程中显示它,但它也没有显示。如果我在创建窗口之前执行消息循环,它会显示,但一段时间后主消息循环会断言。

我知道不应该像这样做,而是在工作线程中处理,但是使用当前的代码我需要更改太大。

1 个答案:

答案 0 :(得分:2)

免责声明:我不知道MFC,但我知道Windows API,这是MFC的基础之上。

也许您需要调用ShowWindow()。另外,您是否正在处理WM_CREATE消息?如果是这样,也许你正在返回错误的值。

如果上述内容不适用或有意义,请忽略。