我的程序到定时器的回调函数不执行了,请高手帮我看看!

guoshen 2003-03-15 02:19:47
void CALLBACK internalTimerProc(UINT id,UINT msg,DWORD dwUser,DWORD dw1,DWORD dw2)
{
AfxGetMainWnd()->PostMessage(WM_USER_BEGIN,0,0);程序执行到这不执行OnBegin(....),在头文件中,消息映射中定义了WM_USER_BEGIN与OnBegin(....)的关系。

}

UINT CThreadProc(LPVOID pParm)
{

TIMECAPS timecaps;
int TimerResolution;

if (timeGetDevCaps(&timecaps,sizeof(TIMECAPS))==TIMERR_NOERROR)
{
TimerAccuracy=Min(Max(timecaps.wPeriodMin,Accuracy),timecaps.wPeriodMax);
}

timeBeginPeriod(TimerAccuracy);
TimerResolution=1;
TimerID =timeSetEvent( TimerResolution,TimerAccuracy,
internalTimerProc,1,TIME_PERIODIC);

return 0;
}
void CTestDlg::OnValueChangedStart(BOOL Value)
{
// TODO: Add your control notification handler code here
if(Value)
{
CWinThread* pThread=AfxBeginThread(CThreadProc,GetSafeHwnd(),THREAD_PRIORITY_NORMAL);

LRESULT CTestDlg::OnBegin(WPARAM wParam,LPARAM lParam)
{
....
}
...全文
265 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sander 2003-08-12
  • 打赏
  • 举报
回复
up
Sander 2003-08-07
  • 打赏
  • 举报
回复
我也有同样问题,是不执行CallBack函数了!!!!
shines77 2003-03-16
  • 打赏
  • 举报
回复
不明白?

是没有执行到internalTimerProc(可在里面设置MessageBeep(MB_OK);测试),还是
AfxGetMainWnd()->PostMessage(WM_USER_BEGIN,0,0); 没有执行OnBegin(....)?
用户 昵称 2003-03-16
  • 打赏
  • 举报
回复
参考一下看看
头文件声明
static DWORD __stdcall ThreadProc( LPVOID lpparam ); //串口进程
//用static和__stdcall在类里面声明函数实现全局函数的效果。

实现
DWORD CComm::ThreadProc( LPVOID lpParam )
{
CComm *pThis = ( CComm * )lpParam; //得到主窗口指针

...
::PostMessage( pThis->m_MainWindow, UM_DATAARRIVAL, 0, dwBytesRead );
//发送数据到达消息



winphoenix 2003-03-15
  • 打赏
  • 举报
回复
upup

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧