windows中的c线程HWND错误

标签 c multithreading

下面是我的代码。它遇到了处理错误。

`

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;
}

错误:

最佳答案

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

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

看起来该参数只是一个虚拟变量(并未在线程函数中真正使用),因此您也可以(只是为了“快速修复”)使用 NULL (或一个0)

关于windows中的c线程HWND错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42285376/

相关文章:

c - linux内核模块权限

c - 如何解释 GDB 中的断点?

c - 如何将链表中的最后一个节点复制到变量中,然后删除链表中的原始节点?

C 输入 - getchar()

java - 如何将对象上的字段设置为 Final 以避免线程在同一对象上看到空引用?

C11线程编程

c - 图映射资源信号量

java - 如何让一个线程加入另一个线程但只等待 n 秒的 CPU 时间?

linux - 非抢占式线程?

c++ - 在线程中访问 vector.front() 会导致运行时错误