mfc瀹炴椂鏄剧ず鏁版嵁鎬庝箞璁剧疆
鍦?MFC 涓疄鏃舵樉绀烘暟鎹彲浠ラ€氳繃浠ヤ笅鍑犵鏂规硶鏉ヨ缃細
- 浣跨敤瀹氭椂鍣細鍦?MFC 涓彲浠ヤ娇鐢ㄥ畾鏃跺櫒鏉ュ畾鏃舵洿鏂版暟鎹苟瀹炴椂鏄剧ず銆傚彲浠ヤ娇鐢?SetTimer 鍑芥暟鏉ュ垱寤轰竴涓畾鏃跺櫒锛屽苟鍦?OnTimer 鍑芥暟涓洿鏂版暟鎹苟鏇存柊鐣岄潰鏄剧ず銆?/li>
渚嬪瓙锛?鍦ㄥご鏂囦欢涓坊鍔犲畾鏃跺櫒 ID锛?/p>
#define TIMER_ID 1
鍦ㄥ垵濮嬪寲鍑芥暟涓垱寤哄畾鏃跺櫒锛?/p>
SetTimer(TIMER_ID, 1000, NULL);
鍦?OnTimer 鍑芥暟涓洿鏂版暟鎹苟鏇存柊鐣岄潰鏄剧ず锛?/p>
void CMyDlg::OnTimer(UINT_PTR nIDEvent)
{
if (nIDEvent == TIMER_ID)
{
// 鏇存柊鏁版嵁
// 鏇存柊鐣岄潰鏄剧ず
}
CDialogEx::OnTimer(nIDEvent);
}
- 浣跨敤澶氱嚎绋嬶細浣跨敤澶氱嚎绋嬬殑鏂瑰紡鍙互鍦ㄥ悗鍙扮嚎绋嬩腑鏇存柊鏁版嵁锛屽苟閫氳繃娑堟伅鏈哄埗灏嗘暟鎹紶閫掔粰涓荤嚎绋嬭繘琛屽疄鏃舵樉绀恒€?/li>
渚嬪瓙锛?鍦ㄥ悗鍙扮嚎绋嬩腑鏇存柊鏁版嵁骞跺彂閫佹秷鎭細
void CMyThread::Run()
{
while (m_bRunning)
{
// 鏇存柊鏁版嵁
// 鍙戦€佹秷鎭?/span>
PostMessage(WM_MY_MESSAGE, WPARAM(data), LPARAM(0));
Sleep(1000);
}
}
鍦ㄤ富绾跨▼鐨勬秷鎭鐞嗗嚱鏁颁腑鎺ユ敹娑堟伅骞舵洿鏂扮晫闈㈡樉绀猴細
BEGIN_MESSAGE_MAP(CMyDlg, CDialogEx)
// 鍏朵粬娑堟伅鏄犲皠
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)
END_MESSAGE_MAP()
LRESULT CMyDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
// 鏇存柊鐣岄潰鏄剧ず
return 0;
}
- 鏁版嵁鐩戝惉妯″紡锛氬湪鏁版嵁鍙樺寲鏃惰Е鍙戠浉搴旂殑浜嬩欢锛屽苟鍦ㄤ簨浠跺鐞嗗嚱鏁颁腑鏇存柊鐣岄潰鏄剧ず銆?/li>
渚嬪瓙锛?鍦ㄦ暟鎹被涓畾涔変簨浠讹細
class CMyData
{
public:
// 瀹氫箟浜嬩欢
typedef void (CMyData::*UpdateEventHandler)(int);
void SetUpdateEventHandler(UpdateEventHandler handler)
{
m_updateEventHandler = handler;
}
void UpdateData(int data)
{
// 鏇存柊鏁版嵁
// 瑙﹀彂浜嬩欢
if (m_updateEventHandler)
(this->*m_updateEventHandler)(data);
}
private:
UpdateEventHandler m_updateEventHandler;
};
鍦ㄧ晫闈㈢被涓鐞嗕簨浠跺苟鏇存柊鐣岄潰鏄剧ず锛?/p>
BEGIN_MESSAGE_MAP(CMyDlg, CDialogEx)
// 鍏朵粬娑堟伅鏄犲皠
ON_UPDATE_EVENT(OnUpdateEvent)
END_MESSAGE_MAP()
void CMyDlg::OnUpdateEvent(int data)
{
// 鏇存柊鐣岄潰鏄剧ず
}
浠ヤ笂鏄嚑绉嶅父瑙佺殑瀹炴椂鏄剧ず鏁版嵁鐨勬柟娉曪紝鍙互鏍规嵁鍏蜂綋鎯呭喌閫夋嫨閫傚悎鐨勬柟娉曟潵璁剧疆銆?/p>