vc 进度条控件_VC运行库修复工具

vc 进度条控件_VC运行库修复工具1 创建式程,编辑对话框资源创建一个基于对话框的工程,添加控件,如下图所示:各控件ID及变量如下:2 在头文件中定义与线程相关变量// Ch13Demo2Dlg.htypedef struct Threadin

1 创建式程,编辑对话框资源

创建一个基于对话框的工程,添加控件,如下图所示:

vc 进度条控件_VC运行库修复工具

各控件ID及变量如下:

vc 进度条控件_VC运行库修复工具

2 在头文件中定义与线程相关变量

// Ch13Demo2Dlg.h

typedef struct Threadinfo{

CProgressCtrl *progress;//进度条对象

int speed;//进度条速度

int pos;//进度条位置

} thread,*lpthread;

class CCh13Demo2Dlg : public CDialog

{

……

protected:

HICON m_hIcon;

thread thread1;//线程1的结构

thread thread2;//线程2的结构

thread thread3;//线程3的结构

HANDLE hThread1;//线程1线程句柄

HANDLE hThread2;//线程2线程句柄

HANDLE hThread3;//线程3线程句柄

定义线程入口函数

// Ch13Demo2Dlg.cpp

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 对话框控件初始化

// Ch13Demo2Dlg.cpp

BOOL CCh13Demo2Dlg::OnInitDialog()

{

BOOL CCh13Demo2Dlg::OnInitDialog()

{

CDialog::OnInitDialog();

……

m_progress1.SetRange(0,20);//设置进度条范围

m_progress2.SetRange(0,20);//设置进度条范围

m_progress3.SetRange(0,20);//设置进度条范围

GetDlgItem(IDC_PAUSE1)->EnableWindow(FALSE);//停止按钮无效

GetDlgItem(IDC_PAUSE2)->EnableWindow(FALSE);//停止按钮无效

GetDlgItem(IDC_PAUSE3)->EnableWindow(FALSE);//停止按钮无效

return TRUE;

}

// Ch13Demo2Dlg.cpp

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;

}

void CCh13Demo2Dlg::OnStar1()

{

// TODO: Add your control notification handler code here

DWORD ThreadID;

DWORD code;

//生成线程参数

thread1.progress=&m_progress1;//进度条对象

thread1.speed=100;//速度

thread1.pos=0;//初始位置

if(!GetExitCodeThread(hThread1,&code)||(code!=STILL_ACTIVE))

{

hThread1=CreateThread(NULL,0,ThreadFun,&thread1,0,&ThreadID);//创建并开始线程

}

GetDlgItem(IDC_PAUSE1)->EnableWindow(TRUE);//停止按钮生效

GetDlgItem(IDC_STAR1)->EnableWindow(FALSE);//开始按钮无效

}

void CCh13Demo2Dlg::OnStar2()

{

// TODO: Add your control notification handler code here

DWORD ThreadID;

DWORD code;

//生成线程

thread2.progress=&m_progress2;//线程结构

thread2.speed=200;

thread2.pos=0;

if(!GetExitCodeThread(hThread2,&code)||(code!=STILL_ACTIVE))

{

hThread2=CreateThread(NULL,0,ThreadFun,&thread2,0,&ThreadID);//创建线程

}

GetDlgItem(IDC_PAUSE2)->EnableWindow(TRUE);//停止按钮生效

GetDlgItem(IDC_STAR2)->EnableWindow(FALSE);//开始按钮无效

}

void CCh13Demo2Dlg::OnStar3()

{

// TODO: Add your control notification handler code here

DWORD ThreadID;

DWORD code;

//生成线程

thread3.progress=&m_progress3;//线程结构

thread3.speed=200;

thread3.pos=0;

if(!GetExitCodeThread(hThread3,&code)||(code!=STILL_ACTIVE))

{

hThread3=CreateThread(NULL,0,ThreadFun,&thread3,0,&ThreadID);//创建线程

}

GetDlgItem(IDC_PAUSE3)->EnableWindow(TRUE);//停止按钮生效

GetDlgItem(IDC_STAR3)->EnableWindow(FALSE);//开始按钮无效

}

void CCh13Demo2Dlg::OnPause1()

{

// TODO: Add your control notification handler code here

DWORD code;

if(GetExitCodeThread(hThread1,&code))

if(code==STILL_ACTIVE)//如果当前线程还活动

{

TerminateThread(hThread1,0);//前些终止线程

CloseHandle(hThread1);//销毁线程句柄

}

GetDlgItem(IDC_PAUSE1)->EnableWindow(FALSE);//停止按钮无效

GetDlgItem(IDC_STAR1)->EnableWindow(TRUE);//开始按钮生效

}

void CCh13Demo2Dlg::OnPause2()

{

// TODO: Add your control notification handler code here

DWORD code;

if(GetExitCodeThread(hThread2,&code))

if(code==STILL_ACTIVE)

{

TerminateThread(hThread2,0);

CloseHandle(hThread2);

}

GetDlgItem(IDC_PAUSE2)->EnableWindow(FALSE);//停止按钮无效

GetDlgItem(IDC_STAR2)->EnableWindow(TRUE);//开始按钮生效

}

void CCh13Demo2Dlg::OnPause3()

{

// TODO: Add your control notification handler code here

DWORD code;

if(GetExitCodeThread(hThread3,&code))

if(code==STILL_ACTIVE)

{

TerminateThread(hThread3,0);

CloseHandle(hThread2);

}

GetDlgItem(IDC_PAUSE3)->EnableWindow(FALSE);//停止按钮无效

GetDlgItem(IDC_STAR3)->EnableWindow(TRUE);//开始按钮生效

}

vc 进度条控件_VC运行库修复工具

-End-

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/17255.html

(0)
上一篇 2024年 9月 16日
下一篇 2024年 9月 16日

相关推荐

关注微信