2010-10-11 52 views
0

我想在我的project.And添加彈出消息函數創建我使其在子線程運行,因爲我需要一個實時notification.But我找到通知對話框是否在我的子線程中創建(由AfxBeginThread開始),對話框的所有元素(按鈕,url ...)都不顯示。消息框只是一個空白對話框。如果我解壓縮函數並通過按鈕啓動它,那麼它可以正常工作。這裏的函數很簡單。對話框desn't顯示正確時,它的子線程

UINT sendNotification(LPVOID pParam) 
{ 
    int x = GetSystemMetrics(SM_CXSCREEN); 
    int y = GetSystemMetrics(SM_CYSCREEN); 

    testPopDlg *testPop = new testPopDlg; 
    testPop->Create(IDD_TEST,0); 
    CRect lprect(0,0,0,0); 
    testPop->GetWindowRect(lprect); 
    int w = lprect.Width(); 
    int h = lprect.Height(); 
    testPop->web.Navigate("http://www.google.com",NULL,NULL,NULL,NULL); 
    testPop->ShowWindow(SW_SHOW); 
    for(int k=0;k<20;k++) //slide out 
    { 
     testPop->MoveWindow(x-w,y-h*k/20,w,y-h*k/20,1); 
     Sleep(20); 
    } 
    Sleep(5000); //will close after 5 sec 
    return 0; 
} 

爲什麼這個函數在子線程中不起作用?

回答

1

要使用在MFC不同的線程的對話,你應該在UI thread創建它。要創建UI線程,您基本上必須創建一個從CWinThread派生的類。另請參閱此code project article

+0

感謝您的有用信息。 – Young 2010-10-12 05:17:09