在一个mfc程序中,我开了两个计时器,
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1;      // fail to create
} if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
  sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1;      // fail to create
} // TODO: Delete these three lines if you don't want the toolbar to
//  be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
//前面的代码
/////////////////////////////////////
m_timerID1 = this->SetTimer(1,100,0);///
m_timerID2 =this->SetTimer(2,200,0);///
/////////////////////////////////////
//下面是计时器处理:
void CMainFrame::OnTimer(UINT nIDEvent) 
{
if(nIDEvent == 1)
//
else if(nIDEvent == 2)
AfxGetMainWnd()->PostMessage(WM_READ,0,0);

CFrameWnd::OnTimer(nIDEvent);
}WM_READ为我自己定义的消息处理#define WM_READ WM_USER+12
请问该程序被执行一段时间后为什么会产生错误?
是PostMessage的事吗?
谢了!
mailto [email protected]

解决方案 »

  1.   

    不如换一下:
    AfxGetMainWnd()->PostMessage(WM_COMMAND,WM_READ,0);
      

  2.   

    是什么样的错误?
    如果说有错误的话,哪有可能是定时的时间太短了,处理的函数消耗时间太长,造成定时事件丢失
    ===================================
    您想非常省事的写 C++ 程序文档吗?
    DocWizard 略作小改动,版本号 1.0.0.2 欢迎使用欢迎下载,提出改进建议 http://www.betajin.com/alphasun/您在写文档时是否被数量众多的类成员函数所烦恼?是否为了美观的
    版面、格式而困扰?是否为了做成CHM而不得不进行大量的手工操作?
    本软件可以帮助您        ●    生成C++的类的HTML格式的文档,条分缕析,版面美观而朴实。
                    并且可以集成到  HTML  Workshop  中,和其他类一起形成CHM。        ●    而且可以生成  content  of  topic  (.hhc)  文件以及生成
                    index  (.hhk)  文件。避免您手工编辑生成文件的麻烦。要知
                    道在  HTML  Workshop  中编辑生成这两种文件是非常麻烦的。        ●    在马上就要推出的新版本中,将提供二次开发接口,您将可以
                    操纵文档生成过程,形成更符合您要求的文档。当然源代码的
                    解析本软件已经帮您完成了,您所要做的仅仅是生成您所关心
                    的“部分”文档。
    欢迎下载,提出改进建议 http://www.betajin.com/alphasun/
      

  3.   

    ahphone多谢回帖,我试了你的方法,但不行。alphapaopao,我用的是windows xp,程序运行一会,如果你不移动鼠标还可以,只要一移动鼠标,系统就提示程序遇到问题需要关闭。我人为好像是在移动鼠标时,程序接到消息,导致消息队列溢出,可能由于我定义的消息使用不当?thanx all the same!
      

  4.   

    wm_read 对应的消息函数是 void read(){MessageBox("attention!","test",MB_OK);}
      

  5.   

    探出对话框未免太暴力了,你可以尝试一下 TRACE,或者写LOG到文件
      

  6.   

    alphapaopao,thank u for your support,i am still online,may i take the honour to 
     have your qq?