我在我的APP类里
afx_msg LRESULT OnTimeHandle(WPARAM wParam, LPARAM lParam);
在cpp里定义了
#define TimeHandleWindowMessage WM_USER+200ON_MESSAGE(TimeHandleWindowMessage, OnTimeHandle)LRESULT CTestModuleApp::OnTimeHandle(WPARAM wParam, LPARAM lParam)
{
CUdpTestComm* m_UdpTestComm = (CUdpTestComm*)lParam;
if(m_UdpTestComm)
m_UdpTestComm->HandleTimeout(); return 0;}我想触发该消息:
theApp.PostThreadMessage(TimeHandleWindowMessage, 0, (DWORD)this);
为什么,不进入那个消息处理函数中?
afx_msg LRESULT OnTimeHandle(WPARAM wParam, LPARAM lParam);
在cpp里定义了
#define TimeHandleWindowMessage WM_USER+200ON_MESSAGE(TimeHandleWindowMessage, OnTimeHandle)LRESULT CTestModuleApp::OnTimeHandle(WPARAM wParam, LPARAM lParam)
{
CUdpTestComm* m_UdpTestComm = (CUdpTestComm*)lParam;
if(m_UdpTestComm)
m_UdpTestComm->HandleTimeout(); return 0;}我想触发该消息:
theApp.PostThreadMessage(TimeHandleWindowMessage, 0, (DWORD)this);
为什么,不进入那个消息处理函数中?
{
DWORD curTick = GetTickCount();//得到当前系统时间
if(m_SendMsgTimer ==0xFFFFFFFFL)
return ; //如果当前时间小于没有到延时的5秒,那么继续发送TimeHandleWindowMessage消息
//如果当前系统时间,超过5秒,那么执行下一次发送
if(curTick < m_SendMsgTimer)
{
Sleep(10);
//继续发送消息
theApp.PostThreadMessage(TimeHandleWindowMessage, 0, (DWORD)this);
}
else
NextSend();//执行下一次发送任务
}
方法二,想建立一个ontimer,你也可以利用事件处理。
ON_THREAD_MESSAGE而不是ON_MESSAGE
while(bShutdown){ peekMessage()...... }不好意思,很久没写C++了,意思是对的,应该看的懂吧.
ON_THREAD_MESSAGE而不是ON_MESSAGE
这里改了也没有用啊
{
OutputDebugString("超时启动下一次启动测试CUdpTestComm::HandleTimeout()\n"); DWORD curTick = GetTickCount();//得到当前系统时间
DWORD EndTick = curTick + 20;
//如果当前时间小于没有到延时的5秒,那么继续发送TimeHandleWindowMessage消息
//如果当前系统时间,超过5秒,那么执行下一次发送
while(curTick < EndTick)
{
curTick = GetTickCount();
Sleep(1);
};
SendOneTimes(UP_TEST_PACKET);//执行下一次发送任务,不会执行到这里
}