我想创建一个无模式对话框,HWND hwnd;
hwnd = CreateDialog( GetModuleHandle(NULL),   MAKEINTRESOURCE( IDD_CONTROL_PANEL ), NULL, ControlPanelProc  );if( NULL == hwnd ){DWORD dwerr = GetLastError();
}运行的结果是hwnd == NULL, 并且dwerr == 0(没有错误),请问是怎么回事。
同样的代码在另一个程序里就好使。

解决方案 »

  1.   

    这个错误的问题是没有联接 comctl32.lib,现在解决了,谢谢 happyparrot(快乐鹦鹉)
      

  2.   

    没有联接 comctl32.lib
    ==没有连接的话,编译没有问题啊
      

  3.   

    没有库,link的时候会提示 unresolved external syboml
      

  4.   

    居然忽略掉系统的Lib?一般用CDialog.Create
      

  5.   

    to  happyparrot(快乐鹦鹉) 
    我使用win API编程创建无模式对话框的时候使用如下代码
    HWND hwnd;
    hwnd = CreateDialog( GetModuleHandle(NULL),   MAKEINTRESOURCE( IDD_CONTROL_PANEL ), NULL, ControlPanelProc  );if( NULL == hwnd ){DWORD dwerr = GetLastError();
    }
    运行的结果是hwnd == NULL, 并且dwerr == 0(没有错误)这个错误的原因如下:
    在我的对话框模版中存在List Control 和 Tree Control,因此在程序初始化的地方要加上: INITCOMMONCONTROLSEX ctrlex;
    ctrlex.dwSize = sizeof( INITCOMMONCONTROLSEX );
    ctrlex.dwICC = ICC_TREEVIEW_CLASSES; InitCommonControlsEx( &ctrlex ); ctrlex.dwICC = ICC_LISTVIEW_CLASSES;
    InitCommonControlsEx( &ctrlex );
    并且要链接上
     comctl32.lib
    才可以创建对话框我把这个问题放一阵子结贴,希望给遇到类似情况的兄弟一些帮助。来者有分,呵呵。
      

  6.   

    GetLastError()==0说明操作成功了啊.
      

  7.   

    GetModuleHandle(NULL) 返回可执行文件的基地址
    刚刚学到,共同分享