一、CreateDialog

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

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

参数:

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

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

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

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

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

二、DialogBox

函数功能:该宏根据对话框模板资源创建一个模态的对话框。DialogBOX函数直到指定的回调函数通过调用EndDialog函数中止模态的对话框才能返回控制。该宏使用DialogBoxParam函数。

函数原型:int DialogBox(HINSTANCE hlnstance,LPCTSTRIpTemplate,HWND hWndParent,DLGPROC IpDialogFunc);

参数:

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

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

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

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

返回值:如果函数调用成功,则返回值为在对函数EndDialog的调用中的nResult参数.该函数用于中止对话框。如果函数调用失败,则返回值为C1。若想获得更多的错误信息,请调用GetLastError函数。

三、DialogProc

函数功能:该函数为一个应用程序定义可与DialogBOX函数一起使用的回调函数。它处理发送到一个模态的或无模式对话框的消息。DLGPROC类型定义了一个指向此回调函数的指针。DialogProc函数是应用程序定义函数名的一个占位符。

函数原型:BOOL CALLBACK DialogProc(HWND hwndDlg,UINT UMsg,WPARAM wParam,LPARAM IParam);

参数:

hwndDlg:指定对话框。

uMsg:指定消息。

wParam:指定消息特定的其他信息。

Iparam:指定消息特定的其他信息。

返回值:除了对MM_INITDIALOG消息的响应之外如果函数处理消息,则对话框应用程序应该返回非零值.

四、区别

调用CreateDialog, 需要ShowWinodow才能显示对话框,DialogBox不需要

五、样例

// “关于”框的消息处理程序。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{UNREFERENCED_PARAMETER(lParam);switch (message){case WM_INITDIALOG:return (INT_PTR)TRUE;case WM_COMMAND:if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL){EndDialog(hDlg, LOWORD(wParam));return (INT_PTR)TRUE;}break;}return (INT_PTR)FALSE;  //返回非零值
}LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{int wmId, wmEvent;PAINTSTRUCT ps;HDC hdc;static int idComboBox;switch (message){case WM_CREATE:{}break;case WM_COMMAND:wmId    = LOWORD(wParam);wmEvent = HIWORD(wParam);// 分析菜单选择:switch (wmId){case ID_TEST:{HWND hAbout = CreateDialog(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hWnd,About);ShowWindow(hAbout, SW_SHOW);}break;case IDM_ABOUT:DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);break;case IDM_EXIT:DestroyWindow(hWnd);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}break;case WM_PAINT:hdc = BeginPaint(hWnd, &ps);// TODO: 在此添加任意绘图代码...EndPaint(hWnd, &ps);break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0;
}

Win32API:CreateDialog、DialogBox、DialogProc相关推荐

  1. 一行命令实现录屏,支持热键和鼠标操作,区域、帧率、格式任你选择

    作者:天元浪子 来源:CSDN 博客 市面上的录屏工具软件有很多,基本都是窗口程序.毕竟,离开GUI的支持,设置参数.选择录像区域等操作都会变得非常困难.不过,窗口程序也并非无往不胜,即便是屏幕录像这 ...

  2. selenium 模拟键盘事件 复制粘贴、右键、回车等

    [selenium 模拟键盘事件 复制粘贴.右键.回车等] #coding=utf-8 ''' selenium ''' from selenium import webdriver as wd im ...

  3. python连接打印机打印文档、图片、pdf文件等

    引言 python连接打印机进行打印,可能根据需求的不同,使用不同的函数模块. 如果你只是简单的想打印文档,比如office文档,你可以使用ShellExecute方法,对于微软office的文档.p ...

  4. TWEEN动画、JQUERY、ES6 — 1、定时器和TWEEN动画

    1.定时器的基础知识(设置.清除.返回值分析) JS中的定时器一共有两种: 1.window.setTimeout([function],[interval]):设置一个定时器,当到达指定时间后执行对 ...

  5. C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项

    0. 引言 UNIX是一个注册商标,是要满足一大堆条件并且支付可观费用才能够被授权使用的一个操作系统.linux是unix的克隆版本,是由其创始人Linus和诸多世界知名的黑客手工打造的一个操作系统. ...

  6. Python分布式爬虫打造搜索引擎完整版-基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站

    Python分布式爬虫打造搜索引擎 基于Scrapy.Redis.elasticsearch和django打造一个完整的搜索引擎网站 https://github.com/mtianyan/Artic ...

  7. 总结OnOK()、OnCancel()、OnClose()、OnDestroy()之间的区别(转)

    目录(?)[+] cDialogonokenddialogdestroywindow区别 收藏 1摘要 2模式对话框的显示 3模式对话框的循环等待 4模式对话框的循环终止 5与OK和Cancle按钮的 ...

  8. 关于OnOK()、OnCancel()、OnClose()、OnDestroy() 模式对话框

    关于OnOK().OnCancel().OnClose().OnDestroy() 模式对话框 http://www.cnblogs.com/minvt/archive/2009/11/16/1603 ...

  9. python打印机打印图片_python连接打印机实现打印文档、图片、pdf文件等功能

    引言 python连接打印机进行打印,可能根据需求的不同,使用不同的函数模块. 如果你只是简单的想打印文档,比如office文档,你可以使用ShellExecute方法,对于微软office的文档.p ...

最新文章

  1. httpclient异步发送请求_关于Tornado5.1:到底是真实的异步和还是虚假的异步
  2. 比较String、StringBuffer和StringBuilder
  3. 10_Android中通过HttpUrlConnection访问网络,Handler和多线程使用,读取网络html代码并显示在界面上,ScrollView组件的使用
  4. html代码编辑器sp,在线HTML编译,文本关键字高亮显示,富文本编辑实现大概思路...
  5. 喝酒、吸烟和喝茶三者相对而言,哪个对身体有益?哪个对身体有害?
  6. 【转】勤奋小孩的遗言:没有理由不坚持。
  7. java爬虫基础知识,Java网络爬虫基础知识
  8. 字词拼音查询易语言代码
  9. oracle vm virtualbox安装xp,如何在VirtualBox虚拟机中安装XP系统?
  10. 【电脑故障】打印机驱动程序无法使用且print spooler错误1068
  11. 学习制作FlappyBird时遇到的问题
  12. Jikes 研究虚拟机(RVM)一 设计和实现问题
  13. 高阶函数,太有用啦!
  14. 人工智能技术知识图谱
  15. 联想开机按f2怎么修复系统图解_windows10开机按f几进入一键还原 按下F2就进入联想电脑拯救系...
  16. SQL SERVER使用STUFF函数拼接
  17. 知识图谱:Konwledge Graph简介
  18. 计算机化考试实施方案,上海对外经贸大学计算机分级教学实施方案
  19. 【毕业答辩】值得所有毕业生收藏的论文答辩技巧!
  20. 阿里巴巴《Java开发手册(泰山版)》

热门文章

  1. 手把手教你将chatGpt接到微信
  2. ffmpeg推rtsp、rtmp音视频流命令
  3. 艾兰岛编辑器-事件监听器
  4. 人工智能技术与物联网的融合
  5. 民营医院不做竞价,做啥能带业绩
  6. VScode中无法使用转到定义
  7. 论文笔记之Estimator Varience in RL
  8. SOTA 激光相机标定velo2cam_calibration(待完成)
  9. BFC、IFC、GFC、FFC
  10. AR发展简史(未完待续)