我们项目的主界面和子对话框都使用的自己风格的皮肤和按钮,但所有的弹出消息对话框都用的WINDOWS的MessageBox和AfxMessageBox对话框,在显示上不一致,请问怎么封装MessageBox API,使能统一成自己的风格?

解决方案 »

  1.   

    自己做一对话框代替MessageBox不就得了
      

  2.   

    用钩子捕获MessageBox的WM_create消息
    然后重设其按钮,标题栏的风格
      

  3.   

    CDialog dlg; dlg.Create(IDD_ABOUTBOX, NULL); dlg.SetWindowText(lpszPrompt);
    dlg.SetDlgItemText(IDC_STATIC_TEXT, lpszPrompt); dlg.ShowWindow(SW_SHOW);
    dlg.UpdateWindow();
      

  4.   

    这样调用
    ::AfxMessageBox("我是被重载的AfxMessageBox!", MB_USERDEFINE);
    int COwnAfxMessageBoxApp::DoMessageBox(LPCTSTR lpszPrompt, UINT nType, UINT nIDPrompt) 
    {
    if (MB_USERDEFINE == nType)
    {
    CDialog dlg; dlg.Create(IDD_ABOUTBOX, NULL); dlg.SetWindowText(lpszPrompt);
    dlg.SetDlgItemText(IDC_STATIC_TEXT, lpszPrompt); dlg.ShowWindow(SW_SHOW);
    dlg.UpdateWindow(); Sleep(2000); dlg.DestroyWindow(); return TRUE;
    } return CWinApp::DoMessageBox(lpszPrompt, nType, nIDPrompt);
    }