进度条的优先级比对

一共设置了三个优先级,第一个正常优先级,第二个低优先级,第三个高优先级

运行效果:

代码:

 1 void CTestProgressDlg::OnBnClickedBtnStart()
 2 {
 3     // TODO: 在此添加控件通知处理程序代码
 4     // 创建线程
 5     m_hThread1 = CreateThread(NULL, 0, Thread1, this, CREATE_SUSPENDED, NULL);
 6     m_hThread2 = CreateThread(NULL, 0, Thread2, this, CREATE_SUSPENDED, NULL);
 7     m_hThread3 = CreateThread(NULL, 0, Thread3, this, CREATE_SUSPENDED, NULL);
 8     // 设置线程优先级
 9     SetThreadPriority(m_hThread1, THREAD_PRIORITY_NORMAL);
10     SetThreadPriority(m_hThread2, THREAD_PRIORITY_LOWEST);
11     SetThreadPriority(m_hThread3, THREAD_PRIORITY_HIGHEST);
12     // 唤醒线程
13     ResumeThread(m_hThread1);
14     ResumeThread(m_hThread2);
15     ResumeThread(m_hThread3);
16 }
17 DWORD WINAPI CTestProgressDlg::Thread1(LPVOID lpParam)
18 {
19     CTestProgressDlg *pDlg = (CTestProgressDlg*)lpParam;
20     for(int i = 0;i < 10000;i++)
21     {
22         pDlg->m_progress1.SetPos(i);
23     }
24     return 0;
25 }
26 DWORD WINAPI CTestProgressDlg::Thread2(LPVOID lpParam)
27 {
28     CTestProgressDlg *pDlg = (CTestProgressDlg*)lpParam;
29     for(int i = 0;i < 10000;i++)
30     {
31         pDlg->m_progress2.SetPos(i);
32     }
33     return 0;
34 }
35 DWORD WINAPI CTestProgressDlg::Thread3(LPVOID lpParam)
36 {
37     CTestProgressDlg *pDlg = (CTestProgressDlg*)lpParam;
38     for(int i = 0;i < 10000;i++)
39     {
40         pDlg->m_progress3.SetPos(i);
41     }
42     return 0;
43 }
44 
45 void CTestProgressDlg::OnBnClickedBtnPause()
46 {
47     // TODO: 在此添加控件通知处理程序代码
48     SuspendThread(m_hThread1);
49     SuspendThread(m_hThread2);
50     SuspendThread(m_hThread3);
51 }
52 
53 void CTestProgressDlg::OnBnClickedBtnContinue()
54 {
55     // TODO: 在此添加控件通知处理程序代码
56     ResumeThread(m_hThread1);
57     ResumeThread(m_hThread2);
58     ResumeThread(m_hThread3);
59 }

 

posted @ 2014-05-11 18:08  冷冰若水  阅读(273)  评论(0编辑  收藏  举报