dlgthread1.DoModal();//新建的一个窗口
dlgthread1.SetTimer(6,1000,0);//  <--- 上面执行完了之后,dlgthread1就销毁了 你应该在dlgthread1增加一个对WM_TIMER消息的处理,在dlgthread1::OnInitDialog里面SetTimer()

解决方案 »

  1.   

    不太明白!对WM_TIMER消息的处理函数我加了的,能在仔细点么?
      

  2.   

    在dlgthread1的InitDialog函数中加
    SetTimer(6,1000,0);
    然后对dlgthread1类添加WM_TIMER处理函数。
      

  3.   

    BOOL CDddDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();
    SetIcon(m_hIcon, TRUE);
    SetIcon(m_hIcon, FALSE);

    SetTimer( 6, 1000, 0 );
    return TRUE;
    }
    void CDddDlg::OnTimer(UINT nIDEvent) 
    {
    if( nIDEvent == 6 )
    {
    TRACE("OnTimer\n");
    }
    CDialog::OnTimer(nIDEvent);
    }BOOL CDddDlg::DestroyWindow() 
    {
    KillTimer( 6 );
    return CDialog::DestroyWindow();
    }
      

  4.   

    那里有InitDialog函数呀?
    我没有找到。help!!!
      

  5.   

    BOOL outthread::InitInstance()
    {
        thread1 dlgthread1;
        m_pMainWnd = &dlgthread1;
        dlgthread1.DoModal();//新建的一个窗口
        dlgthread1.SetTimer(6,1000,0);//设置一个定时器
    return TRUE;
    }
    outthread类是我从CWinThread中派生的,没有你说的InitDialog函数,怎么办?
      

  6.   

    你的意思是在outthread中产生Timer吗,
    直接Settimer()就Ok啊
      

  7.   

    不行,那样的Settimer函数就需要4个参数了
      

  8.   

    一样的啊
    SetTimer(::FindWindow("你的程序名","你的程序名"),6,1000,0)
      

  9.   

    或 SetTimer((HWND)GetMainWnd(),6,1000,0)
      

  10.   

    谢谢 strip 和kaitty!!!!!
    非常感谢!!!