我想创建了一个能处理Onidle()的线程,但不成功,望高人指点一下!

解决方案 »

  1.   

    创建了,也重载了onidle,但程序不执行里面代码
      

  2.   

    其他的省略
    class COtherDropDialogThread : public CWinThread
    {
    .......
    //{{AFX_VIRTUAL(COtherDropDialogThread)
    public:
    virtual BOOL InitInstance();
    virtual int ExitInstance();
    virtual BOOL OnIdle(LONG lCount);
    //}}AFX_VIRTUAL};
    BOOL COtherDropDialogThread::InitInstance()
    {
    CODDialog dlg;
    m_pMainWnd = &dlg;
    dlg.DoModal();
    return FALSE;

    }
    BOOL COtherDropDialogThread::OnIdle(LONG lCount) 
    {
    // TODO: Add your specialized code here and/or call the base class
    CString str;
    CWinThread::OnIdle(lCount);
    str.Format("%d",lCount);
    TRACE(str);
    return TRUE;
    // return CWinThread::OnIdle(lCount);
    }不知为何不执行Onidle(),
    望高手指点
      

  3.   

    MFC基于对话框不会自动执行空闲线程的。楼主可以度着下面这此就可以了。在.cpp文件中加入
    #include "afxpriv.h"...
    在消息映射中加入
    ON_MESSAGE(WM_KICKIDLE,OnMyIdle)
    ..
    LRESULT OnMyIdle(WPARAM wParam,LPARAM lParam)
    {
     //这里添加空闲处理过程。 
     return TRUE ;
    }