Win32 API进程创建控制

本文详细介绍了如何使用全局结构体Threadinfo和线程来控制进度条,包括进度条对象、速度和位置的管理。通过创建线程句柄、定义线程入口函数、使用CreateThread和TerminateThread等API实现线程的创建、运行和终止。同时,提供了关键步骤的注释和代码示例,以便更好地理解整个流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于控制进度条:

创建一个全局结构体Threadinfo,存储进度条对象的信息

typedef  struct  Threadinfo

{

CProgressCtrl *progress;    //进度条对象

int speed;                                  //进度条速度

int pos;                                      //进度条位置

}

这样用比较方便

 

开始进程吧,

(1)创建一个进程句柄

HANDLE    hThread;      //线程的线程句柄

(2)定义全局线程入口函数,这是一个回调函数

DWORD WINAPI ThreadFun(LPVOID pthread)
{
lpthread temp = (lpthread)pthread;      //进度条结构体
temp->progress->SetPos(temp->pos);
while(temp->pos < 20)
{
Sleep(temp->speed);                   //设置速度
temp->pos++;                          //增加进度
temp->progress->SetPos(temp->pos);    //设置进度条新位置
if (temp->pos == 20)
{
temp->pos = 0;                    //进度条满则归0
}
}
return TRUE;
}

(3)使用API函数CreateThread函数创建线程,使用API函数TerminateThread终止线程,并销毁线程句柄

if (!GetExitCodeThread(hThread1,&code) || (code!=STILL_ACTIVE))
{
hThread1 = CreateThread(NULL,0,ThreadFun,&thread1,0,&ThreadID);
//创建并开始线程
}

此时线程已经创建,并且运行线程函数

if (GetExitCodeThread(hThread1,&code))    //如果当前线程 活动
{
if (code == STILL_ACTIVE)
{
TerminateThread(hThread1,0); //终止线程
CloseHandle(hThread1);           //销毁线程句柄
m_progress.SetPos(0);
}
}

要点说明

CreateThread:  创建一个新的进程,返回已建进程的句柄

SuspendThread: 用于挂起指定线程,终止线程的执行

ResumeThread:  将进程挂起状态计数值减1

ExitThread :由线程自身完成终止执行的操作

TerminateThread: 强行终止某一进程的操作

GetThreadPriority:  获取一个进程的优先级

SetThreadPriority:  设定一个进程所在进程中的相对优先级大小

PostThreadMessage  :用于向线程发布消息,即将消息放到指定的消息队列中,并且立即返回。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值