2017-02-16 51 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)初始化