CreateThread创建多线程时窗口一闪就没了?

汪宁宇 汪宁宇 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我在SDK代码插入一个对话框资源,WinMain函数用线程创建对话框时,怎么窗口一闪就没了~~

下面是SDK.cpp所有的代码:

//////////////////////////////////////////////////////////////////////////
// SDK.cpp
// SDK线程创建对话框实例

#include <windows.h>
#include "Resource.h"

//////////////////////////////////////////////////////////////////////////
// 线程函数、对话框回调函数
DWORD WINAPI ThreadProc(LPVOID lpParameter);
LRESULT CALLBACK DialogProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);

// 全局变量:实例句柄、窗口句柄
HINSTANCE hCurInstance = NULL;
HWND hWnd = NULL;

/************************************************************************/
/* 函数说明:WinMain函数
/************************************************************************/
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
hCurInstance = hInstance;
DWORD dwThread;
CreateThread(NULL,0,ThreadProc,NULL,0,&dwThread);

Sleep(100);
return 0;
}

/************************************************************************/
/* 函数说明:线程函数、用来创建对话框
/* 参 数:LPVOID
/* 返 回 值:msg.wParam
/************************************************************************/
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
if(DialogBox(NULL,MAKEINTRESOURCE(IDD_DIALOG_DIALOG),NULL,(DLGPROC)DialogProc) == IDOK)
return 0;
}

/************************************************************************/
/* 函数说明:窗口回调函数
/* 参 数:消息处理
/* 返 回 值:msg.wParam
/************************************************************************/
LRESULT CALLBACK DialogProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDCANCEL:
PostQuitMessage(0);
break;
case IDOK:
break;
default:
break;
}
break;
}
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return FALSE;
}


资源文件源码就不用贴了吧,我是将MFC对话框资源文件COPY过来的~~
...全文

相关推荐

CreateThread函数创建窗口线程.rar_createthread_线程 窗口_线程函数

在创建窗口线程时,我们通常会在线程函数中调用`CreateWindow`或`CreateWindowEx`来创建窗口。

A Pei

基于CreateThread函数的窗口线程创建与实战详解

在Windows多线程编程中,函数仅负责启动一个新的执行流,而真正决定该线程行为的,是开发者提供的线程入口函数——即ThreadProc。它是整个线程生命周期的核心逻辑载体,决定了线程是否能正确初始化资源、处理任务、响应消息以及安全退出。一个设计良好的ThreadProc不仅需要满足操作系统对函数签名的严格要求,还需兼顾异常处理、资源管理、消息循环构建等复杂场景。尤其当线程用于承载独立窗口(如工具窗口、动画界面或后台UI模块)时,其内部结构远比普通工作线程复杂。本章将深入剖析。

Neo-ke

vs2013创建多线程教程

在 VS2013 平台中,创建多线程可以使用 CreateThread 函数或 AfxBeginThread 函数。1. 创建线程结构体首先,需要定义一个线程结构体,用于存储线程的相关信息。

zrx281731

AfxBeginThread和CreateThread创建工作线程

在提供的两个压缩包文件"AfxBeginThread创建工作线程.zip"和"CreateThread建工作线程.zip"中,可能包含了使用这两种方法创建线程的示例代码,读者可以下载学习,理解它们在实际项目中的应用

马龙小二

如何使用CreateThread()创建每个具有不同ThreadProc()函数的多线程?

本文详细探讨了在C++中使用CreateThread()函数创建多个线程的方法。介绍了三种不同的解决方案来管理线程过程和线程ID,包括使用std::vector存储线程信息,创建包含线程过程地址的数组

weixin_38690095
评论 12
收藏 已收藏
分享
返回顶部
汪宁宇
VC/MFC 16,550 成员 421,606 内容