MFC中
用AfxMessageBox("test")语句会弹出窗体,然后点击窗体里的“确定”按钮,窗体就会关闭有什么办法实现自动关闭窗体吗?要求这个自动关闭不增加内存和CPU使用率。

解决方案 »

  1.   

    未公开函数MessageBoxTimeOut()
    http://www.blogjava.net/baicker/archive/2007/07/13/130072.html
      

  2.   

    这个要自己重写MessageBox,设置一个定时器
      

  3.   

    如果是你自己写的程序你可以做一个线程
    如果有MessageBox弹出来然后线程过一段时间就关了他
      

  4.   

    extern "C"
    {
    int WINAPI MessageBoxTimeoutA(IN HWND hWnd, IN LPCSTR lpText, IN LPCSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);
    int WINAPI MessageBoxTimeoutW(IN HWND hWnd, IN LPCWSTR lpText, IN LPCWSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);
    };
    #ifdef UNICODE
    #define MessageBoxTimeout MessageBoxTimeoutW
    #else
    #define MessageBoxTimeout MessageBoxTimeoutA
    #endif
    void C测试Dlg::OnBnClickedButton4()
    {
    MessageBoxTimeout(NULL, _T("倒计时?"),_T( "tishi"), MB_OKCANCEL, 0, 3*1000);

    }
    三秒后自动消失
      

  5.   

    重写的话比较麻烦,还是用
    extern "C"
    {
    int WINAPI MessageBoxTimeoutA(IN HWND hWnd, IN LPCSTR lpText, IN LPCSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);
    int WINAPI MessageBoxTimeoutW(IN HWND hWnd, IN LPCWSTR lpText, IN LPCWSTR lpCaption, IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);
    };
    #ifdef UNICODE
    #define MessageBoxTimeout MessageBoxTimeoutW
    #else
    #define MessageBoxTimeout MessageBoxTimeoutA
    #endif
    方便
      

  6.   

    1楼的不错或者用SetTimer()来尝试做一下