2011-06-02 76 views
0

的++我得到這個錯誤:錯誤C2027:構建與Visual Studio℃持續使用未定義類型GUITHREADINFO

error C2027: use of undefined type 'rectAnalyzer::GUITHREADINFO' 

功能rectAnalyzer如下:

DWORD WINAPI rectAnalyzer(LPVOID param) 
{ 
MSG msg; 
PARAM_PASSED *p = (PARAM_PASSED*) param; 
std::ostringstream ss; 
std::wstring str; 
PGUITHREADINFO g = (PGUITHREADINFO) malloc(sizeof(struct GUITHREADINFO)); 

if(p) 
{ 
    ss << "rectAnalyzer: entering thread " << p->index << "->" << p->parentThreadId << std::endl; 
    str = string2wideString(ss.str().c_str()); 
    OutputDebugString(str.c_str()); 
    PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE); 
    if(WaitForSingleObject(hStartEvent,INFINITE) != WAIT_OBJECT_0) 
     return 1; 
    ss << "rectAnalyzer: thread " << p->index << " sending WM_APP" << std::endl; 
    str = string2wideString(ss.str().c_str()); 
    OutputDebugString(str.c_str()); 
    if(!GetGUIThreadInfo(p->parentThreadId, g)) 
    { 
     ss << "rectAnalyzer: unable to get GUI thread info" << std::endl; 
     str = string2wideString(ss.str().c_str()); 
     OutputDebugString(str.c_str()); 
    } 
    while(!PostMessage(g->hwndActive, WM_APP, (WPARAM) 0, (LPARAM) 0)) 
    { 
     ss << "rectAnalyzer: thread " << p->index << " unable to send WM_APP" << std::endl; 
     str = string2wideString(ss.str().c_str()); 
     OutputDebugString(str.c_str()); 
     Sleep(1); 
    } 
    free(p); 
} 
else 
{ 
    ss << "rectAnalyzer: cannot get p" << std::endl; 
    str = string2wideString(ss.str().c_str()); 
    OutputDebugString(str.c_str()); 
} 

return 0; 
} 

我還包含WinUser。 h或Windows.h,但沒有結果。

回答

1

使用,而不是sizeof(struct GUITHREADINFO)

+0

sizeof(GUITHREADINFO)我不能讓它嘗試,但它(使用關鍵字'struct'注)的函數裏面寫的作品THX :) – gc5 2011-06-02 08:19:21

+0

'結構S''F'是的一個局部聲明新類型'f :: S',它在這個函數中隱藏全局類型'S'。 'struct s {...};''裏面'f'應該是這個類型的定義,但是當它丟失時,編譯器返回符合sizeof'的錯誤(但是你想要全局定義函數的大小)。 – 2011-06-02 08:40:01

+0

安好現在我看到了定義,很容易理解:) thx – gc5 2011-06-02 08:45:37

相關問題