2017-02-16 24 views
-2

下面是我的code.it得到一個句柄錯誤。Windows中的c線程HWND錯誤

`

int main(){ 

HWND hMainWin; 
DWORD threadID; 
//Create thread down 
HANDLE threadHandle = CreateThread(NULL, 
           0, 
           threadFunction, 
           (LPVOID)hMainWin, 
           0, 
           &threadID); 
} 

DWORD WINAPI threadFunction(LPVOID param){ //my thread function 
HANDLE hwnd = (HANDLE)param; 
for(int i=0;i<5;i++) 
{ 
printf("hello"); 
} 
return 0; 
} 

錯誤:

+1

該消息很明確:您將單元化變量傳遞給線程創建函數。 –

+0

我不明白,我該怎麼解決它。 –

+0

你認爲在hMainWin中存儲了什麼值? – immibis

回答

0

你有一個變量HWND hMainWin;未初始化,您正在使用(初始化)變量作爲自變量中排名第4到CreateThread()通話。由於變量未初始化,因此它的未定義,這是您收到錯誤消息的原因。

從外觀上看,您的代碼似乎是控制檯應用程序。因此,您沒有窗口或其句柄(HWND),因此您在初始化hMainWin時遇到問題。

它看起來像參數僅僅是一個虛擬變量(不是真的在你的線程函數中使用),所以你還不如(只是一個「速戰速決」)與NULL(或0)初始化