CreateThread创建多线程时窗口一闪就没了?
下面是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`来创建窗口。
基于CreateThread函数的窗口线程创建与实战详解
在Windows多线程编程中,函数仅负责启动一个新的执行流,而真正决定该线程行为的,是开发者提供的线程入口函数——即ThreadProc。它是整个线程生命周期的核心逻辑载体,决定了线程是否能正确初始化资源、处理任务、响应消息以及安全退出。一个设计良好的ThreadProc不仅需要满足操作系统对函数签名的严格要求,还需兼顾异常处理、资源管理、消息循环构建等复杂场景。尤其当线程用于承载独立窗口(如工具窗口、动画界面或后台UI模块)时,其内部结构远比普通工作线程复杂。本章将深入剖析。
vs2013创建多线程教程
在 VS2013 平台中,创建多线程可以使用 CreateThread 函数或 AfxBeginThread 函数。1. 创建线程结构体首先,需要定义一个线程结构体,用于存储线程的相关信息。
AfxBeginThread和CreateThread创建工作线程
在提供的两个压缩包文件"AfxBeginThread创建工作线程.zip"和"CreateThread建工作线程.zip"中,可能包含了使用这两种方法创建线程的示例代码,读者可以下载学习,理解它们在实际项目中的应用
如何使用CreateThread()创建每个具有不同ThreadProc()函数的多线程?
本文详细探讨了在C++中使用CreateThread()函数创建多个线程的方法。介绍了三种不同的解决方案来管理线程过程和线程ID,包括使用std::vector存储线程信息,创建包含线程过程地址的数组


