Windows 编程之 对话框总结
关于对话框
1 对话框种类
对话框也是一种资源,Windows中对话框分为模态的和非模态的,以及Windows系统中已经定义好的那些通用对话框,比方打开文件,目录,调色板,字符串查找等。
2 模态对话框和非模态对话框的差别
模态对话框就是那种你打开后必须关了才干转到主窗体的那种类型;非模态对话框就是即便打开了对话框,你依旧能够在主窗体中指指点点的那种类型。
3 模态对话框的创建及弹出
<1>
INT_PTR DialogBox(
HINSTANCEhInstance, // handle to module
LPCTSTR lpTemplate, //dialog box template
HWND hWndParent, //handle to owner window
DLGPROC lpDialogFunc // dialog box procedure);
<2>
INT_PTR DialogBoxIndirect(
HINSTANCEhInstance, // handle to module
LPCDLGTEMPLATE lpTemplate,// dialog box template
HWND hWndParent, // handle to owner window
DLGPROC lpDialogFunc // dialog box procedure);
<3>
INT_PTR DialogBoxIndirectParam(
HINSTANCE hInstance, // handle to module
LPCDLGTEMPLATE hDialogTemplate, // dialog box template
HWNDhWndParent, // handle toowner window
DLGPROC lpDialogFunc, // dialog box procedure
LPARAM dwInitParam //initialization value);
<4>
INT_PTR DialogBoxParam(
HINSTANCEhInstance, // handle to module
LPCTSTR lpTemplateName, // dialog box template
HWND hWndParent, // handle to owner window
DLGPROC lpDialogFunc, //dialog box procedure
LPARAM dwInitParam // initialization value);
当中DialogBox和DialogBoxParam是从资源中载入对话框,其余两个是从内存中载入对话框。在这里面要注意的一个參数就是DLGPROC lpDialogFunc,函数原型是:
INT_PTR CALLBACK DialogProc(
HWNDhwndDlg, // handle to dialog box
UINT uMsg, //message
WPARAMwParam, // first message parameter
LPARAM lParam //second message parameter);
这个回调函数跟窗体回调函数非常类似,可是函数的返回类型不一样。
4 模态对话框的消息处理
DialogProc非常像WindowProc,但它不是WindowProc,对话框的WindowProc在Windows内部定义,它会调用DialogProc函数。
BOOL CALLBACK DlgProc(HWND hdlg,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
caseWM_INITDIALOG:
returnTRUE;
caseWM_COMMAND:
switch(LOWORD(wParam))
{
caseIDOK:
EndDialog(hdlg,0);
break;
}
break;
}
returnFALSE;
}
WM_INITDIALOG消息会在对话框创建的时候发送,在此消息下能够用来初始化对话框中的各种控件。
5 模态对话框的关闭
BOOL EndDialog( HWND hDlg,INT_PTR nResult);
指定创建对话框的函数的返回值。
6 利用控件创建复杂对话框
7 模态对话框中自己定义控件
既然是自己定义控件,那么必须在要进行窗体的设计,窗体的注冊,以及配置响应的窗体过程函数。
制作步骤:
<1>在工具箱中找到custom control,将其拖拽到面板中
<2>点击属性,指定起class名称,以及ID
<3>在WinMain函数中进行设计注冊
<4>指定其窗体过程函数
Windows 编程之 对话框总结的更多相关文章
- 【Windows编程】系列第八篇:通用对话框
上一篇我们学习了菜单的基本编程,本篇来了解一下通用对话框的使用.Windows系统之所以是目前最流行的桌面系统,也是因为Windows有一套标准化,统一友好的交互界面,比如菜单.工具栏.状态栏以及各个 ...
- 4.使用CFileDialog打开文件对话框,获得文件路径 -windows编程
引言:没想到2022年还有很多工业软件公司依然使用MFC,微软也一直在更新MFC的库,这次使用MFC封装的CFileDialog类,写一个获得选定文件路径,名称,扩展名的程序. 个人技术博客(文章整理 ...
- 【Windows编程】系列第七篇:Menubar的创建和使用
上一篇我们学习了利用windows API创建工具栏和菜单栏,与上一篇紧密联系的就是菜单栏,菜单栏是一个大多数复杂一些的Windows应用程序不可或缺的部分.比如下图就是Windows自带的记事本的菜 ...
- 【Windows编程】系列第九篇:剪贴板使用
上一篇我们学习了常见的通用对话框,本篇来了解剪贴板的使用,它常用于复制粘贴功能. 剪贴板是Windows最早就加入的功能,由于该功能非常实用,我们几乎每天都会使用到.通过剪贴板,我们就可以将数据从一个 ...
- Windows编程入门程序详解
引用:http://blog.csdn.net/jarvischu/article/details/8115390 1. 程序 /******************************* ...
- 设置windows窗口ICON 【windows 编程】【API】【原创】
1. ICON介绍 最近开始接触windows 编程,因此将自己所接触的一些零散的知识进行整理并记录.本文主要介绍了如何更改windows对话框窗口的ICON图标.这里首先介绍一下windows IC ...
- windows编程经典书籍
本人是刚刚开始学习windows编程的,感觉看雪学院的大牛很NB.想找一些书籍来看学习学习,可是不知道看哪些书好.驱动,对菜鸟们来说真是一个很深奥的话题,所以 ,我找来了这篇文章供大家分享,以后大家发 ...
- windows编程中的数据类型
在windows编程中,有许多奇怪的数据类型,初学者不知道这些代表什么,下面就把一些数据类型列出如下: ATOM 原子(原子表中的一个字符串的参考) BOOL 布尔变量 BOOLEAN 布尔变量 BY ...
- Access Violations 访问冲突(AVs)是Windows编程时发生的最麻烦的错误?
Access Violations<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office&qu ...
随机推荐
- Genymotion Unable to create Virtual Device:Connection timeout
1.进入C:\Users\[UserName]\AppData\Local\Genymobile,打开genymotion.log,找到最后几句话: 九月 2 14:29:45 [Genymo ...
- c语言memset详解
void *memset(void *s, int ch, size_t n);(int ch可以是char或int) 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的 ...
- vnc server配置、启动、重启与连接,图形管理linux系统
环境:RedHat Linux 5企业版.Xwindows:gnome (红帽默认安装的图形界面) 尽管我们可以使用SSH连接远程通过字符界面来操作Linux,但是对于更多熟悉图形人来说是很不方便的, ...
- Java设计模式菜鸟系列(九)外观模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39805735 外观模式(Facade):是为了解决类与类之间的依赖关系的,像spring一 ...
- vector的内存释放
转自:http://www.cnblogs.com/summerRQ/articles/2407974.html vector : C++ STL中的顺序容器,封装数组 1. vector容器的内存自 ...
- C#中结构与类的区别
一.类与结构的示例比较: 结构示例: public struct Person { string Name; int height; int weight public bool overWeight ...
- 网页制作之html基础学习2-标签
一.html结构组成 <html> --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> & ...
- ant 具体命令行展示代码
C:\Users\xutianhao>ant -hant [options] [target [target2 [target3] ...]]Options: -help, -h print t ...
- win7(64位)php5.5-Apache2.4-环境安装
一.安装配置Apache2.4.7(httpd-2.4.7-win64-VC11.zip ) 1.解压下载的安装包:httpd-2.4.12-x64-vc11-r2.zip将其放到自己的安装目录(我的 ...
- intent.getAction()
这个是发送端注册上的IntentFilter filter = new IntentFilter( Intent.ACTION_MEDIA_SCANNER_STARTED); filter.addAc ...