MFC 关于系统时间获取

这个博客介绍了如何在MFC应用程序中创建一个线程,以每隔1秒自动更新对话框上的系统时间。通过使用`CTime`类获取当前时间,并格式化为指定格式,然后将结果显示在IDC_EDIT3编辑框中。该示例展示了线程的使用以及事件处理,以实现定时刷新界面元素。
摘要由CSDN通过智能技术生成

关于MFC 创建获取系统当前时间,自动运行例子:

  1. // 构造函数中添加
public:
	C串口通讯Dlg(CWnd* pParent = NULL);	// 标准构造函数
	void ThreadRun();//时间自动添加函数
	static UINT ThreadTimer(LPVOID pParam);
	HANDLE m_ThreadKill;
	HANDLE m_ThreadKillCheck;
  1. 在主程序的初始化函数中添加
 BOOL C串口通讯Dlg::OnInitDialog() 
{

		//获取系统当前时间
	CString strTime;
	CString filename;
	CTime tm;
	tm = CTime::GetCurrentTime();         //获取当前系统时间
	strTime = tm.Format("%Y-%m-%d %H:%M:%S");   //格式化系统时间。
	tt = tm.Format("%d");
	SetDlgItemText(IDC_EDIT3, strTime);

	/
	m_ThreadKill = CreateEvent(NULL, TRUE, FALSE, NULL);
	m_ThreadKillCheck = CreateEvent(NULL, TRUE, FALSE, NULL);

	::AfxBeginThread(ThreadTimer, LPVOID(this), THREAD_PRIORITY_HIGHEST);

}

 3. 添加功能函数中的代码:
 UINT C串口通讯Dlg::ThreadTimer(LPVOID pParam)
{
	C串口通讯Dlg *pThis = (C串口通讯Dlg*)pParam;

	pThis->ThreadRun();

	return 0;
}
void C串口通讯Dlg::ThreadRun()
{
	::SetThreadIdealProcessor(::GetCurrentThread(), 0);

	::ResetEvent(m_ThreadKill);
	::ResetEvent(m_ThreadKillCheck);

	while (true)
	{
		DWORD dwEvent = ::WaitForSingleObject(m_ThreadKill, 1000); //1000ms Sleep
		if (dwEvent != WAIT_TIMEOUT)
			break;
		CTime tm;
		CString strTime;
		tm = CTime::GetCurrentTime();         //获取当前系统时间
		strTime = tm.Format("%Y-%m-%d %H:%M:%S");   //格式化系统时间。
		SetDlgItemText(IDC_EDIT3, strTime);
	}
	::SetEvent(m_ThreadKillCheck);
}

实现功能的图片:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值