MFC多线程编程做时间显示程序
来源:互联网 发布:软件行业目标市场分析 编辑:程序博客网 时间:2024/04/30 02:11
- 主要参考:http://blog.csdn.net/qq61394323/article/details/9328301
- 略有改动。
- 建立一个基于对话框的工程MultiThread1,在对话框IDD_MULTITHREAD1_DIALOG中加入两个按钮和一个编辑框,两个按钮的ID分别是IDC_START,IDC_STOP ,标题分别为“启动”,“停止”,IDC_STOP的属性选中Disabled;编辑框的ID为 IDC_TIME ,属性选中Read-only;
- 在MultiThread1Dlg.h文件中添加线程函数声明: void ThreadFunc();
- 注意,线程函数的声明应在类CMultiThread1Dlg的外部。 在类CMultiThread1Dlg内部添加protected型变量: HANDLE hThread;
- DWORD ThreadID;
- 分别代表线程的句柄和ID。
- 在MultiThread1Dlg.cpp文件中添加全局变量 m_bRun : volatile BOOL m_bRun;
- m_bRun 代表线程是否正在运行。
- 你要留意到全局变量 m_bRun 是使用 volatile 修饰符的,volatile 修饰符的作用是告诉编译器无需对该变量作任何的优化,即无需将它放到一个寄存器中,并且该值可被外部改变。对于多线程引用的全局变量来说,volatile 是一个非常重要的修饰符。
- 编写线程函数: void ThreadFunc()
- {
- CTime time;
- CString strTime;
- m_bRun=TRUE;
- while(m_bRun)
- {
- time=CTime::GetCurrentTime();
- strTime=time.Format("%H:%M:%S");
- ::SetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_TIME,strTime);
- //在vc6.0以后的版本中不支持AfxGetMainWnd()->m_hWnd来获取HWND,所以需要把这一句改为:
- ::SetDlgItemText(AfxGetApp()->m_pMainWnd->m_hWnd,IDC_TIME, strTime);
- Sleep(1000);
- }
- }
- 该线程函数没有参数,也不返回函数值。只要m_bRun为TRUE,线程一直运行。
- 双击IDC_START按钮,完成该按钮的消息函数: void CMultiThread1Dlg::OnStart()
- {
- // TODO: Add your control notification handler code here
- hThread=CreateThread(NULL,
- 0,
- (LPTHREAD_START_ROUTINE)ThreadFunc,
- NULL,
- 0,
- &ThreadID);
- GetDlgItem(IDC_START)->EnableWindow(FALSE);
- GetDlgItem(IDC_STOP)->EnableWindow(TRUE);
- }
- 双击IDC_STOP按钮,完成该按钮的消息函数: void CMultiThread1Dlg::OnStop()
- {
- // TODO: Add your control notification handler code here
- m_bRun=FALSE;
- GetDlgItem(IDC_START)->EnableWindow(TRUE);
- GetDlgItem(IDC_STOP)->EnableWindow(FALSE);
- }
- 编译并运行该例程,体会使用Win32 API编写的多线程。
阅读全文
0 0
- MFC多线程编程做时间显示程序
- MFC状态栏编程(显示系统时间和进度条)
- MFC中时间显示
- MFC状态栏显示时间
- MFC状态栏显示时间
- MFC中时间显示
- MFC 显示系统时间
- MFC static显示时间
- MFC多线程编程总结
- MFC多线程编程注意事项
- MFC多线程编程
- MFC多线程编程注意事项
- MFC多线程编程注意事项
- MFC多线程编程注意事项
- MFC多线程编程注意事项
- MFC多线程编程注意事项
- 多线程编程MFC
- MFC多线程编程注意事项
- linux c 信号量编程
- 用S3Browser对S3做数据同步
- java中Collection接口&List接口
- webpack打包技术
- 一、评价指标
- MFC多线程编程做时间显示程序
- Kotlin学习(1)概述
- STM32获取DHT11温度传感器数据
- 【Data Structure/Algorithm】排序之冒泡排序
- 再起航,我的学习笔记之JavaScript设计模式25(迭代器模式)
- Codeforces Round #435 (Div. 2)C. Mahmoud and Ehab and the xor(异或的性质)
- 【bzoj 1566】管道取珠(DP)
- Python numpy函数:linspace()创建等差数列
- 为什么在vue的组件中,data要用function返回对象呢?