MFCApplication1Dlg.h 文件中
// MFCApplication1Dlg.h: 头文件
//
#pragma once
// CMFCApplication1Dlg 对话框
class CMFCApplication1Dlg : public CDialogEx
{
// 构造
public:
CMFCApplication1Dlg(CWnd* pParent = nullptr); // 标准构造函数
// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_MFCAPPLICATION1_DIALOG };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
HICON m_hIcon;
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
DWORD GetElapse_Sec(DWORD dwTime, double dSec);
afx_msg void OnBnClickedButton1();
int m_i = 0; // m_i 变量的生命周期 和 CMFCApplication1Dlg这个类的对象的生命周期 一致
//static int m_i; // 类内声明
};
MFCApplication1Dlg.CPP 文件中
void CMFCApplication1Dlg::OnBnClickedButton1()
{
static DWORD dwTime;
bool b = true;
int nSeqNo = m_i;
while (b)
{
switch (nSeqNo)
{
case 0:
MessageBox(_T("0"));
nSeqNo = 100;
break;
case 100:
dwTime = GetTickCount();
Sleep(3000);
MessageBox(_T("100"));
nSeqNo = 200;
break;
case 200:
if (GetElapse_Sec(dwTime, 3))
{
MessageBox(_T("当前超时了!!!"));
b = false;
}
MessageBox(_T("当前是在case 200 中"));
break;
case 1000:
MessageBox(_T("1000"));
nSeqNo = 0;
break;
default:
nSeqNo = 0;
break;
}
}
m_i = nSeqNo;
CString strValue;
strValue.Format(_T("%d"), m_i); // 将int转换为CString
MessageBox(_T("m_i = nSeqNo; 显示 m_i : ") + strValue); //strValue 为 200
}
DWORD CMFCApplication1Dlg::GetElapse_Sec(DWORD dwTime, double dSec)
{
int nSec = (int)(dSec * 1000);
if ((GetTickCount() - dwTime) > static_cast<DWORD>(nSec))
{
return TRUE;
}
else
{
return FALSE;
}
}