c线程在Windows HWND错误

时间:2017-02-16 21:52:22

标签: c multithreading

下面是我的代码。得到一个Handle错误。

`

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)

您有一个未初始化的变量HWND hMainWin;,并且您在调用CreateThread()时使用该(未初始化的)变量作为参数#4。由于变量未初始化,其未定义,这是您收到错误消息的原因。

从外观上看,您的代码似乎是控制台应用程序。因此,您没有窗口或其句柄(HWND),因此您无法初始化hMainWin

看起来这个参数只是一个虚拟变量(在你的线程函数中没有真正使用过),所以你也可以(只是为了快速修复&#34;)用NULL初始化它。 (或0