CreateDialogIndirect()

feng2111 2013-02-21 12:22:27
CreateDialogIndirect()和CreateDialog()这两个函数有什么区别?
请说明示列代码。
...全文
177 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jimette 2013-02-21
CreateDialogIndirect创建非模态对话框么 实例就根据参数填写! HWND WINAPI CreateDialogIndirect( _In_opt_ HINSTANCE hInstance,、、null _In_ LPCDLGTEMPLATE lpTemplate,、、idi_dialog1 _In_opt_ HWND hWndParent,、、this _In_opt_ DLGPROC lpDialogFunc、、回调函数名称! );
回复
肆水東澤 2013-02-21
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::CreateIndirect BOOL 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创建的对话框。
回复
Eleven 2013-02-21
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.
回复
feng2111 2013-02-21
那CreateDialog()这个函数呢?
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2013-02-21 12:22
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……