Win32API第六节—对话框函数

本文详细解析了Win32API中的CreateDialog、CreateDialogIndirect、CreateDialogIndirectParam和CreateDialogParam四个函数,阐述了它们的功能、参数、返回值和注意事项,特别强调了如何在内存中创建无模式对话框,并通过实例展示了如何使用这些函数创建和操作对话框。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Win32API第六节—对话框函数——(6)

[ 收藏生活日志Win32API第六节—对话框函数——(6) ] 发表时间:2010-06-19 16:17 Win32API第六节—对话框函数——(6)编辑:admin

   函数功能: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两种版本。

  函数功能:该宏在内存中从对话框模板上创建一个无模式对话框。此宏使用CreateDialoglndirectparam 函数。

  函数原型:HWND CreateDialoglndirect(HINSTANCE hlnstance,LPCDLGTEMPLATE IPTemplate,HWNDhWndParent,DLGPROC IPDialogFunc);

  参数:

  hlnstance: 标识创建对话框的模块的事例。

  IPTemplate: 指向含有一个模板的全局内存对象的指针。CreateDialoglndirect用此模板创建对话框。对话框模板由描述对话框的标题组成,跟随着标题之后的是描述每一个控制的一个或多个数据块,模板可以用标准格式或扩展格式。在标准模板中,标题是由DLGTEMPLATE结构跟随一个变长数组组成。每个控制的数据是由DLGTEMPLATE结构跟随一个变长数组组成。在扩展模板中,标题用DLGTEMPLATEEX格式,且控制定义用DLGITEMPLATEEX格式。CreatDialoglndirect函数返回后,可释放模板,此模板仅用于启动对话框。

  hWndParent: 标识拥有对话框的窗口。

  IpDialogFunc:指向对话框应用程序的指针,有关更多的对话框应用程序的指针,参见DialogProc。

  返回值:如果函数调用成功,则返回值为指向对话框的句柄。如果函数调用失败,则返回值为NULL。若想获得更多错误信息,可调用GetLastError函数。

  备注:CreateDialOglndirect宏使用CreateWindowEx函数来创建对话框,然后该函数把一个WM_INITDIALOG消息发送到对话框应用程序,如果模板指定DS_SETFONT类型,则函数也把一个WM_SETFONT消息发送到对话框应用程序。如果模板指定WS_VISIBLE类型,则函数显示对话框,最后CreateDialoglndirect返回指向对话框的窗口句柄。

 

CreateDialoglndirect函数返回之后,可用 ShowWindow函数来显示对话框(如果还没有显示)。用DestroyWindow函数来清除对话框。

  在标准对话框模板中,DLGTEMPLATE结构和每一个DLGITEMTEMPLATE结构必须按DWORD边界对齐,遵循DLGEMTEPLATE结构而创建的数据数组也一定按DWORD边界对齐。模板中其他所有变长数组一定要按DWORD边界进行调整。

  在扩展对话框模板上DLGTEMPLATEEX结构和每一个DLGITEMTEMPLATEEX结构必须按DWORD边界对齐;遵循DLGEMTEPLATE结构而创建的数据数组也一定按DWORD边界对齐。模板中其他所有变长数组一定要按DWORD边界进行调整。

  所有对话框模板的字符串,例如对话框和按钮的标题,一定是Unicode字符串。使用

  MltiByteToWidechar函数产生这些Unicode字符串可以创建在Windows和Windows NT两种系统上工作的代码。

  Windows 95和以后版本:系统可支持每个对话框模板最多为255个控制。为把多于255个控制放入对话框,可以在WM_INITDLAIOG消息处理器中创建控制,而不是把它们放入模板中。

  Windows CE:lpTempate参数指向的对话框模板中,DLGTEMPLATE结构并不支持所有的类型。

  速查:Windows NT:3.1 及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:Winuser.h;库文件:user32.lib;Unicode: 在Windows NT上实现为Unicode和ANSI两种版本。

  函数功能:该函数从内存中的对话框模板上创建一个无模式对话框,在显示对话框之前,函数把应用程序定义的值作为WM_INITDIALOG消息的IParam参数传送到对话框过程。应用程序可用此值初始化对话框控制。

  函数原型:HWND CreateDialoglndirectParam(HINSTANCE hlnstance,LPCDLGTEMPLAT IPTemPIate,HWNDhWndParent,DLGPROC IpDialogFunc,LPARAM IParamlnlt);

  参数:

  hlnstance:标识将创建对话框的模块的事例。

  IpTemplate:指向一个含有模板的全局内存对象的指针,CreateDialoglndirectParam用该模板来创建对话框。

  对话框模板由描述对话框的标题组成,跟随着标题之后的是描述每一个控制的一个或多个数据块,模板可以用标准格式或扩展格式。

  在标准模板中,标题是由DLGTEMPLATE结构跟随一个变长数组组成。每个控制的数据是由DLGTEMPLATE结构跟随一个变长数组组成。

  在扩展模板中,标题用DLGTEMPLATEEX格式,且控制定义用DLGITEMPLATEEX格式。

  CreateDiloglndirectParam函数返回后,可释放模板,此模板仅用于启动对话框。

  HWndParent:标识拥有对话框的窗口。

  IpDialogFunc:指向对话框过程的指针,有关更多的对话框过程的信息,参见DialogProc。

  lParamlnit:指定传递到WM_INIDIALOG消息的IParam参数中对话框中的值。

  返回值:如果函数调用成功,则返回值为指向对话框的句柄:如果函数调用失败,则返回值为NULL。若想获得更多的错误信息,可调用GetLastError函数。

  备注:CreatDialoglndirectParam函数使用createWindowEx函数来创建对话框,然后该函数把一个WM_INTDIALOG消息发送到对话框应用程序,如果模板指定DS_SETFONT类型,则函数也把一个WM_SETFONT消息发送到对话框应用程序。如果模板指定WS_VISBLE类型,则函数显示对话框,最后CreatDialogdirectParam返回指向对话框的窗口句柄。

  CreatDialoglndirectParam函数返回之后,可用ShowWindow函数来显示对话框(如果还没有显示)。用DestroyWindow函数来清除对话框。

  在标准对话框模板中,DLGTEMPLATE结构和每一个DLGITEMTEMPLATE结构必须按DWORD边界对齐,遵循DLGEMTEPLATE结构而创建的数据数组也一定按DWORD边界对齐。模板中其他所有变长数组一定要按DWORD边界进行调整。

 

在扩展对话框模板上DLGTEMPLATEEX结构和每一个DLGITEMTEMPLATEEX结构必须按DWORD边界对齐,遵循DLGEMTEPLATE结构而创建的数据数组也一定按DWORD边界对齐。模板中其他所有变长数组一定要按DWORD边界进行调整。

  所有对话框模板的字符串,例如对话框和按钮的标题,一定是Unicode字符串。使用

  MultiByteTowidechar函数产生这些Unicode字符串可以创建在Windows和Windows NT两种系统上工作的代码。

  Windows 95和以后版本:系统可支持每个对话框模板最多为255个控制。为把多于255个控制放入对话框,可以在WM_INITDLALOG消息处理器中创建控制,而不是把它们放入模板中。

  Windows CE:可视屏幕面积之外的对话框不能自动地被重新定位。

  如果用户在对话框有输入焦点的同时按下Alt+H,则系统把一个WM_HELP消息传送到对话过程,应用程序应该通过显示对话框描述表积极帮助来响应此消息。

  DLGTEMPLATE结构的类型成员不支持下列类型:

  DS_SETFONT:在对话框中不能设置字体。

  DS_RECURSE:不需要。任何一个子对话框可自动地被看作递归对话框。

  DS_CONTROL:不需要。

  WS_EX_CONTROLPARENT:所有对话框都被自动假设为控制母体。用DS_CENTER类型可得到缺省位置定位。如果没有指定WS_CHLD.则假设为WS_POPUP类型。

  速查:Windows NT:3.1及以上版本:Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuse.h库文件:user32.lib;Unicode:在Windows NT上实现为Unicode和ANSI两种版本。

  函数功能:该函数根据对话框模板资源创建一个无模式的对话框。在显示对话框之前,函数把一个应用程序定义的值作为WM_INITDIALOG消息IParam参数传到对话框过程应用程序可用此值来初始化对话框控制。

  函数原型:HWND CreateDialogParam(HINSTANCE hlnstancem,LPCTSTR IpTemplateName,HWND hWndParent,DLGPROCIpDialogFunc, LPARAM dwlniParam);

  参数:

  hlnstance:标识一个模块的事例,该模块的可执行文件含有对话框模板。

  IpTemplateName:标识对话框模板。此参数可以指向一个以NULL结尾的字符串的指针,该字符串指定对话框模板名,或是指定对话框模板的资源标识符的一个整型值。如果此参数指定了一个资源标识符,则它的高位字一定为零且低位字一定含有标识符。一定用MAKENTRESOURDE宏指令创建此值。

  HwndParent:指定拥有对话框的窗口。

  IpDialogFunc:指向对话框过程的指针。有关对话框过程的更详细的信息,请参见DialogProc。

  dwlnitParam:指定传递到WM_INITDIALOG消息的IParam参数中的对话框过程的值。

  返回值:如果函数调用成功则返回值为指向对话框的窗口句柄。如果函数调用失败则返回值为NULL。

  若想获得更多错误信息,请调用GetlastError函数。

  备注:CreateoialogParam函数用 CreateWindowEx函数创建对话框。CreateDialogParam函数然后把一个WM_INITDIALOG消息(和一个WM_SETFONT消息,如果模板指定DS SETFONT类型)传递到对话框过程。如果模板指定WS_VISIBLE类型,则函数显示对话框,最后CreateDialogParam返回对话框的窗口句柄。

  CreateDialogParam返回之后应用程序用ShowWindow显示对话框(如果还没有显示)。应用程序用DestroyWindoW函数来清除对话框。

  Windows 95和以后版本:系统可支持每个对话框模板中最多255个控制。为把大于255个的控制放入对话框,需要在WM_INITDIALOG消息处理器中创建控制,而不是把他们放入模板中。

 

Windows CE:IPTemplateName参数指向的对话框模板中DLGTEMPLATE结构并不支持所有的类型。

  速查:Windows NT:3.1 及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件;winuser.h;库文件:use32.lib;Unicode:在Windows NT上实现为Unicode和ANSI两种版本。

  函数功能:该函数根据对话框模板资源创建一个无模式的对话框。在显示对话框之前,函数把一个应用程序定义的值作为WM_INITDIALOG消息IParam参数传到对话框过程应用程序可用此值来初始化对话框控制。

  函数原型:HWND CreateDialogParam(HINSTANCE hlnstancem,LPCTSTR IpTemplateName,HWND hWndParent,DLGPROCIpDialogFunc, LPARAM dwlniParam);

  参数:

  hlnstance:标识一个模块的事例,该模块的可执行文件含有对话框模板。

  IpTemplateName:标识对话框模板。此参数可以指向一个以NULL结尾的字符串的指针,该字符串指定对话框模板名,或是指定对话框模板的资源标识符的一个整型值。如果此参数指定了一个资源标识符,则它的高位字一定为零且低位字一定含有标识符。一定用MAKENTRESOURDE宏指令创建此值。

  HwndParent:指定拥有对话框的窗口。

  IpDialogFunc:指向对话框过程的指针。有关对话框过程的更详细的信息,请参见DialogProc。

  dwlnitParam:指定传递到WM_INITDIALOG消息的IParam参数中的对话框过程的值。

  返回值:如果函数调用成功则返回值为指向对话框的窗口句柄。如果函数调用失败则返回值为NULL。

  若想获得更多错误信息,请调用GetlastError函数。

  备注:CreateoialogParam函数用 CreateWindowEx函数创建对话框。CreateDialogParam函数然后把一个WM_INITDIALOG消息(和一个WM_SETFONT消息,如果模板指定DS SETFONT类型)传递到对话框过程。如果模板指定WS_VISIBLE类型,则函数显示对话框,最后CreateDialogParam返回对话框的窗口句柄。

  CreateDialogParam返回之后应用程序用ShowWindow显示对话框(如果还没有显示)。应用程序用DestroyWindoW函数来清除对话框。

  Windows 95和以后版本:系统可支持每个对话框模板中最多255个控制。为把大于255个的控制放入对话框,需要在WM_INITDIALOG消息处理器中创建控制,而不是把他们放入模板中。

  Windows CE:IPTemplateName参数指向的对话框模板中DLGTEMPLATE结构并不支持所有的类型。

  速查:Windows NT:3.1 及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件;winuser.h;库文件:use32.lib;Unicode:在Windows NT上实现为Unicode和ANSI两种版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值