CreateDialogIndirect()和CreateDialog()这两个函数有什么区别?
请说明示列代码。api

解决方案 »

  1.   

    CreateDialogIndirect创建非模态对话框么实例就根据参数填写!
    HWND WINAPI CreateDialogIndirect(
      _In_opt_  HINSTANCE hInstance,、、null
      _In_      LPCDLGTEMPLATE lpTemplate,、、idi_dialog1
      _In_opt_  HWND hWndParent,、、this
      _In_opt_  DLGPROC lpDialogFunc、、回调函数名称!
    );
      

  2.   

    The CreateDialog macro creates a modeless dialog box from a dialog box template resource. The CreateDialogIndirect macro creates a modeless dialog box from a dialog box template in memory. 
      

  3.   

    CreateDialog()
    概述函数功能:CreateDialog宏从一个对话框模板资源创建一个无模式的对话框,CreateDiaog宏使用CreateDialogParam函数。
    函数原型:HWND CreateDialog(HINSTANCE hlnstance,LPCTSTR lpTemplate,HWND hWndParent,DLGPROC IpDialogFunc);
    编辑本段
    参数hlnstance:标识模块事例,该模块的可执行文件含有对话框模板。
    pTemplate: 标识对话框模板,此参数或是指向一个以结尾的字符串指针,该字符串指定对话框模板名,或是指定对话框模板的资源标识符的一个整型值。如果此参数指定了一个资源标识符,则它的高位字一定为零,且低位字一定含有标识符,一定用MAKEINTRESOURCE宏来创建此值。
    hWndParent: 标识拥有对话框的窗口。
    lpDialogFunc: 指向对话框应用程序的指针。有关更多的对话框应用程序的指针,参见DialogProc。
    返回值:如果函数调用成功,则返回值为指向对话框的句柄;如果函数调用失败,则返回值为NULL。若想获得更多的错误信息,可调用GetLastError函数。
    编辑本段
    备注CreateDialog函数用CreateWindowEx函数来创建对话框。然后CreateDialog函数把一个WM_INITDIALOG消息(如果模板指定DS_SETFONT类型,则加上一个WM_SETFONT消息)传送到对话框应用程序。如果模板指定WS_VISIBLE风格,则函数显示对话框,最后CreateDlalog返回指向对话框的窗口句柄。CreateDialog函数返回之后,应用程序通过Showwindow函数显示对话框(如果还没有显示)。应用程序通过利用DestroyWindow函数来清除对话框。Windows 95和以后版本:系统每个对话框模板可以支持最多达 255个控件。如果要把多于255个控件放入对话框中,必须在WM_INITDIALOG消息处理器中创建控件,而不是把它们放入模板中。Windows CE:IpTempIate参数指向的对话框模板中,DIGTEMPLATE结构并不支持所有类型。
    速查:Windows NT:3.1及以上版本:Windows:95及以上版本:Windows CE:1.0及以上版本:头文件:Winuser.h;库文件:user32.lib; Unicode: Unicode:在 Windows NT上实现为 Unicode和ANSI两种版本。CDialog::CreateIndirectBOOL CreateIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd = NULL);
    BOOL CreateIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd = NULL);返回值:
    如果对话框创建和初始化成功,则返回非零值,否则为0。参数: lpDialogTemplate 包含用于创建对话框的对话框模板的指针。该模板位于DLGTEMPLATE结构和控件信息表单中。有关该结构的更多信息,请参阅联机文档“Win32 SDK”。  
    pParentWnd 指向含有对话框的父窗口对象的指针。如果为NULL,对话框对象的父窗口设置为应用的主窗口。  
    hDialogTemplate 包含对话框模板的全局内存的句柄。模板使用DLGTEMPLATE结构的形式。  说明:
    调用该成员函数从对话框模板中创建一个非模态对话框。
    当创建对话框后,CreateIndirect成员函数立即返回。
    在父窗口中创建之后,如果要求对话框出现,则使用模板中的WS_VISIBLE风格。否则,必须调用ShowWindow。其它对话框风格及应用,请参阅联机文档“Win32 SDK”中的DIATEMPLATE结构和“Microsoft Visual C++ 6.0 MFC类库参考(二)”中的“Windows风格”。使用CWnd::DestroyWindow函数删除由CreateIndirect创建的对话框。