Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
windows HWND中的c线程错误_C_Multithreading - Fatal编程技术网

windows HWND中的c线程错误

windows HWND中的c线程错误,c,multithreading,C,Multithreading,下面是我的代码。它有一个句柄错误 ` intmain(){ HWND hMainWin; 德沃德·特莱德; //创建线程向下 HANDLE threadHandle=CreateThread(空, 0, 线程函数, (LPVOID)hMainWin, 0, &线状体); } DWORD WINAPI线程函数(LPVOID参数){//my thread函数 HANDLE hwnd=(HANDLE)参数; 对于(int i=0;i您有一个未初始化的变量HWND hMainWin;,您在调用Creat

下面是我的代码。它有一个句柄错误

`

intmain(){
HWND hMainWin;
德沃德·特莱德;
//创建线程向下
HANDLE threadHandle=CreateThread(空,
0,
线程函数,
(LPVOID)hMainWin,
0,
&线状体);
}
DWORD WINAPI线程函数(LPVOID参数){//my thread函数
HANDLE hwnd=(HANDLE)参数;

对于(int i=0;i您有一个未初始化的变量
HWND hMainWin;
,您在调用
CreateThread()
时将该(未初始化的)变量用作参数4。由于该变量未初始化,因此其未定义,这就是您收到错误消息的原因

从外观上看,您的代码似乎是一个控制台应用程序。因此,您没有窗口或句柄(
HWND
),因此您在初始化
hMainWin
时遇到问题


看起来该参数只是一个伪变量(并没有在线程函数中真正使用),所以您也可以(只是为了“快速修复”)用
NULL
(或
0
)初始化它

消息很清楚:您正在向线程创建函数传递一个单位化变量。我不明白。我该如何修复它。您认为hMainWin中存储了什么值?
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;
}