14.7 上机实践
在对话框应用程序中添加编辑框和按钮,然后单击按钮后创建两个线程,一个线程在上面的编辑框中连续输出10个"A",输出完成后,另一个进程在下面的编辑框中输出10个"B"。运行结果如图14.8所示。
|
| (点击查看大图)图14.8 运行结果 |
提示:采用事件类进行控制。具体步骤如下:
(1)创建基于对话框的应用程序,添加两个进度条控件,并且添加变量。
(2)定义CEvent类的对象,并且声明两个全局函数。
- Cevent event;
- UINT write1(LPVOID pParam);
- UINT write2(LPVOID pParam);
(3)实现该两个函数,控制进度条移动。
- UINT write1(LPVOID pParam)
- {
- CProgressCtrl *p=(CProgressCtrl*)pParam;
- for(int i=0;i<100;i++)
- {
- p->SetPos(i);
- Sleep(100);
- }
- event.SetEvent();
- return 0;
- }
- UINT write2(LPVOID pParam)
- {
- WaitForSingleObject(event.m_hObject,INFINITE);
- CProgressCtrl *p=(CProgressCtrl*)pParam;
- for(int i=0;i<100;i++)
- {
- p->SetPos(i);
- Sleep(100);
- }
- return 0;
- }
(4)添加单击按钮的消息映射,启动线程。
- void CTestDlg::OnStart()
- {
-
- CWinThread *pwrite1=AfxBeginThread(write1,
- &m_pro1,
- THREAD_PRIORITY_NORMAL,
- 0,
- CREATE_SUSPENDED);
- pwrite1->ResumeThread();
-
- CWinThread *pwrite2=AfxBeginThread(write2,
- &m_pro2,
- THREAD_PRIORITY_NORMAL,
- 0,
- CREATE_SUSPENDED);
- pwrite2->ResumeThread();
- }
【责任编辑:
云霞 TEL:(010)68476606】