函数申明改为
int WINAPI Dlg_Proc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)

解决方案 »

  1.   

    #define UNICODE   //你自己定义的符号
    #endif#ifdef UNICODE
    #define _UNICODE  //系统宏
    #endif
    你也可以写为
    #define MYMACRO   //你自己定义的符号
    #endif#ifdef MYMACRO
    #define _UNICODE  //系统宏
    #endif
    但不能改_UNICODE,因为编译器认识这个宏
      

  2.   

    BOOL CALLBACK Dlg_Proc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
      

  3.   

    1)
    _UNICODE: CRT macro
    UNICODE: Windows macro
    2)
    没清楚你要说什么
    3)
    changed to:
    DialogBoxParam(...,(DLGPROC) Dlg_Proc);
      

  4.   

    INT_PTR WINAPI Dlg_Proc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)改为int WINAPI Dlg_Proc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
      

  5.   

    没有错!!!我按时各位大侠的指示,将对话框过程的声明中返回类型由
    INT_PTR改为int就行了。
    可是我还有点疑问,MSDN上明明类型是这样的,为什么会错呢?
    我想知道个究竟。是不是每个对话框的内存结构都有四个保留位用来存储返回值,而且该保留位
    紧跟在对话框的其他结构后面呢?这跟WINDOWS窗口类结构中的保留位有什么关系
    吗?另外,我的第二个问题其实也很简单,因为从下面的声明可以看出:
    int WINAPI Dlg_Proc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
    返回值是整型,可是在处理WM_COMMAND消息时,返回值为void,那么
    xHANDLE_DLGMSG中不是有误吗?因为HANDLE_#message对应到了
    void On_DlgCommand。还有,我看书上的英文解释是UNICODE宏表明使用的是WINDOWS的UNICODE函数版本
    ,而_UNICODE是使用C运行库的UNICODE版本, 是这样的吗?大侠们赶紧发言,只要问题解决,立即给分!!!
    拜托!!!