我一直在使用一个应用程序,该应用程序与带有 com 接口的微控制器通信并发送状态请求并每隔几秒钟接收一次答案。我使用了相同的设置计时器。当状态发生更改时,警告消息应仅弹出一次,即使状态更改在收到的下一个数据包中仍然存在。但是每次收到数据包时都会弹出警告消息。计时器标志不起作用。如果我遗漏了什么,请告诉我
void CALLBACK StatusRequest(HWND StatusHwnd, UINT uMsg, UINT timerId, DWORD dwTime){
ret = sendReceivePacket(........);
TIMEFLAG = false ;
if (TIMEFLAG == false) { if(ret ==0) // change is status { //warning message// TIMEFLAG = True; ................. } else { }
}
INT_PTR CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wP, LPARAM lP){
switch (msg){ case WM_INITDIALOG:
SetTimer(NULL, TIMER_ID_SEND_REQUEST, 1000 * 3, (TIMERPROC)StatusRequest);
case WM_TIMER:
KillTimer(NULL, TIMER_ID_SEND_REQUEST);
} }
DLg proc 是具有不同消息的主要对话功能。Timeflag 用于停止每次打印警告消息,但它不起作用。杀戮计时器也不起作用。
Note:此问题总结整理于:Kill Timer doesnot end the timer - WINAPI c++