一、对话框

1、对话框的分类

2、对话框的基本使用方式

3、对话框资源

4、有模式对话框的使用

5、 无模式对话框的使用

5.1 加入对话框资源

5.2 定义窗体处理函数

BOOL CALLBACK DialogProc(

HWND hWnd,

UINT UMsg,

WPARAM wParam,

LPARAM lParam

)

5.3 创建对话框

HWND CreateDialog(
HINSTANCE
hInstance, // handle to module
LPCTSTR lpTemplate, // dialog box template name
HWND hWndParent, // handle to owner window
DLGPROC lpDialogFunc // dialog box procedure
);
返回值是创建好的对话框窗体句柄

5.4 显示对话框

ShowWindow

5.5 关闭对话框

EndDialog

5.6 与有模式对话框相比

创建函数:有模式创建对话框 DialogBox

无模式对话框; CreateDialog

程序运行方式:有模式对话框堵塞。禁止其它窗体输入。

无模式对话框会立马返回让主程序继续运行

6 对话框消息

WM_INITDIALOG消息。用途类似于WM_CREATE消息,能够再对话框创建完毕后 进行数据初始化

他与WM_CREATE不同的是,WM_INITDIALOG消息会在对话框资源模板上的全部子控件(button等)创建完毕后再发送给对话框窗体处理函数

wParam  - 当前接受输入焦点子控件窗体句柄

lParam - 创建时附带的參数

7 对话框和普通窗体的对照

7.1 创建方式不同

普通窗体 CreateWindow/Ex

对话框: DialogBox/CreateDialog

7.2 消息

普通窗体:会收到WM_CREATE

对话框:
WM_INITDIALOG

7.3 关闭方式

普通窗体 : DestroyWindow等

对话框: EndDialog

二 子控件

1 由 Windows系统定义的窗体类型能够提供

对应的功能。包含button。文本编辑框, 静态框

2 空间的创建

都能够使用CreateWindow/CreateWindowEx创建, 并获取到空间HWND。

创建时每一个子控件都要有对应的ID号,

ID号尽量要求不反复。

1.3 控件的消息

子控件和父窗体(一般窗体或者对话框)的交换都是通过消息完毕的。假设子窗体状态发生变化,子窗体会向父窗体发送

对应的消息,

一般父窗体会使用SendMessage向子窗体发送消息。同一时候父窗体响应子窗体发送的消息一般在WM_COMMAND中进行处理

三 静态框

1 静态框的创建

窗体类的名称 - STATIC, 用于窗体上显示文字等,假设使用SS_ICON、SS_BITMAP风格能够显示ICON和BITMAP

文本静态框 - 创建时使用SS_SIMPLE就可以

ICON静态框 - 创建时使用SS_ICON, 而且将静态框的窗体名称设置成相应的ICON的资源ID号。比如 “#101”

2 静态框的命令响应

2.1 惊天狂要加入SS_NOTIFY风格

2.2 
WM_COMMAND 进行处理

WPARAM - HIWORD 命令ID

LOWORD 静态框的窗体ID

LPARAM - 静态框创库句柄

3 静态框相关消息

调用SendMessage函数向空间发送消息

如: STM_SETICON消息改动控件显示图标

SendMessage( hStatic, STM_SETICON, (WPARAM)hIcon, 0 );

其它:

GetDlgItem 从窗体中获取指定ID的子控件的窗体句柄

四 button

1 button的分类

依据创建button时使用的风格:

1.1 下压式button PUSH_BUTTON

正常下压式button BS_PUSHBUTTON

三态下压式button BS_3STATE

1.2 分组式button

BS_GROUPBOX

1.3 CheckBoxbutton 多选button

BS_CHECKBOX

1.4 单选button Radio Box

BS_RADIOBUTTON

2.下压式button的使用:

2.1 创建button

创建时使用BUTTON

2.2 响应button的点击命令消息

WM_COMMAND

2.3  通知消息消息处理

SendMessage

Win32 Windows编程 十二的更多相关文章

  1. Win32 Windows编程 十

    一 Windows画图 1 图形绘制 1.1 图形绘制的方式 获取到画图的句柄,设备描写叙述符(DC).使用对应的画图API.在设备上绘制图形 1.2 颜色 RGB,每种颜色8位,共24位颜色 32位 ...

  2. 面向对象编程(十二)——final关键字

    final关键字 Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量. 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和 ...

  3. win32 socket编程(二)——TCP/IP

    一.大端.小端法定义 1.1小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端. (主机字节顺序) 1.2 大端法(Big-Endian ...

  4. Windows Phone 十二、设计器同步

    在设计阶段为页面添加数据源 Blend或者VS的可视化设计器会跑我们的代码,然后来显示出来,当我们Build之后,设计器会进入页面的构造函数,调用InitializeComponent();方法来将U ...

  5. linux网络编程之socket编程(十二)

    今天继续学习socket编程,期待的APEC会议终于在京召开了,听说昨晚鸟巢那灯火通明,遍地礼花,有点08年奥运会的架势,有种冲动想去瞅见一下习大大的真容,"伟大的祖国,我爱你~~~&quo ...

  6. Win32 Windows编程 九

    资源的使用 1 资源文件 图标 光标 字符串 菜单  加速键 对话框资源位图等等 资源脚本文件 - 扩展名为RC文件 定义了资源和相关文件等信息 资源编译器 - RC.exe 2 图标资源 ICON ...

  7. Unix环境高级编程(十二)线程控制

    本章介绍了一个进程中多个线程之间如何保持数据的似有性及进程的系统调用如何与线程进行交互. 1.线程限制: Single Unix定义了一线线程操作的限制,和其他的限制一样,可以通过sysconf来查询 ...

  8. Python并行编程(十二):进程同步

    1.基本概念 多个进程可以协同工作来完成一项任务,通常需要共享数据.所以在多进程之间保持数据的一致性就很重要,需要共享数据协同的进程必须以适当的策略来读写数据.同步原语和线程的库类似. - Lock: ...

  9. Win32 Windows编程 七

    定时器消息 1. WM_TIMER 依照定时器设置的时间段,自己主动向窗体发送一个定时器消息WM_TIMER.优先级比較低 定时器精度比較低.毫秒级别.消息产生时间也精度比較低 2 .消息和函数 WM ...

随机推荐

  1. Binary Tree Preorder Traversal and Binary Tree Postorder Traversal

    Binary Tree Preorder Traversal Given a binary tree, return the preorder traversal of its nodes' valu ...

  2. Windows下配置Mysql

    这里说的配置Mysql,是在安装时进行的,请先查看:Windows平台下安装Mysql 紧接上文,安装完成后将配置选项打上对勾,按下“Finish”,出现下面的界面,这里有一个很好的功能,mysql配 ...

  3. GNU scientific library

    GNU scientific library 是一个强大的C,C++数学库.它涉及的面很广,并且代码效率高,接口丰富.正好最近做的一个项目中用到多元高斯分布,就找到了这个库. GNU scientif ...

  4. Spring 3 调度器示例 —— JDK 定时器和 Quartz 展示

    Spring框架提供了执行和调度任务的抽象,支持线程池或者在应用服务器环境中代理给CommonJ. Spring也集成了支持使用JDK Timer和Quartz调度库提供的Quartz Schedul ...

  5. ZOJ 1825 compoud words

    题目大意:输入一串递增的单词序列,需要找出符合条件的单词递增输出,条件是:将一个单词拆成左右两个单词后,能在输入中找到这两个单词.例如单词 alien,可以拆成 a 和 lien,而输入中刚好同时有a ...

  6. org.tigris.subversion.javahl.ClientException: Attempted to lock an already-locked dir svn: Working c

    Eclipse插入svn提交出现:org.tigris.subversion.javahl.ClientException: Attempted to lock an already-locked d ...

  7. git 使用过程(三、文件的添加 修改)

    1.库中添加文件 在目录下新建一个文件 如 testfile.txt .输入命令:① git add testfile.txt  ②git commit -m "这里是你提交的说明" ...

  8. KindEditor - 代码高亮

    *:插入数据库的数据,不用转义,KE已经自动转义过了. 调用的时候使用引入代码的css: 显示代码的页面:

  9. [Swust OJ 404]--最小代价树(动态规划)

    题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535   Des ...

  10. PyQt中登录框设计

    很多软件,比如QQ,亦或一些管理系统,运行之后都会先弹出一个登录框,只有登录成功了,才能进入软件主界面. 以前在邮件列表中回答过如何做登录框,这里重新整理下. 从刚开始做Delphi的时候就有不少人纠 ...