#define ERR_AND_RETURN(msg)  CDlgMsgBox dlg( _T("错误提示"), _T(msg), IDR_MAINFRAME );\
g_pMsgBox = (CWnd*)&dlg;\
dlg.DoModal();\
g_pMsgBox = NULL;\
return FALSE
始终报dlg未定义,这是为什么

解决方案 »

  1.   

    CDlgMsgBox dlg,g_pMsgBox 都需要你去定义
    凭空冒出这两个东西,系统当然不认
      

  2.   

    有没有include "DlgMsgBox.h"?
    在调用 ERR_AND_RETURN(msg)的地方替换成:
    CDlgMsgBox dlg( _T("错误提示"), _T(msg), IDR_MAINFRAME );
    g_pMsgBox = (CWnd*)&dlg;
    dlg.DoModal();
    g_pMsgBox = NULL;
    return FALSE;
    看看....
      

  3.   

    是未定义还是重复定义啊?宏定义要改成这样:
    #define ERR_AND_RETURN(msg)  { CDlgMsgBox dlg( _T("错误提示"), _T(msg), IDR_MAINFRAME );\
    g_pMsgBox = (CWnd*)&dlg;\
    dlg.DoModal();\
    g_pMsgBox = NULL;\
    return FALSE; }
    要加大括号,否则在同一个作用域用两次以上ERR_AND_RETURN(msg)会出现dlg重复定义的。
      

  4.   

    支持 tufaqing,在同一段代码中重复使用这个宏,当然会导致重复定义。因此,应该在前后添加 { ... }