现在位置: 首页 > 自动控制 > 工业·编程 > 文章
2012-09-11 12:30 工业·编程 ⁄ 共 9784字 暂无评论
77 子窗口控制概述 当子窗口的状态发生改变时,子窗口处理鼠标和键盘消息并通知父窗口。子窗口这时就变成了其父窗口高一级的输入设备。 可以建立自己的子窗口控制,也可以利用一些预定义的窗口类和窗口过程来建立标准的子窗口控制。 子窗口控制采用的形式有:按钮、复选框、编辑框、列表框、组合框、文本串、滚动条。 子窗口控制在对话框中最常用。 子窗口控制的位置和尺寸是在程序的资源描述文中的对话框模板中定义的。也可以...
阅读全文
2012-09-11 12:28 工业·编程 ⁄ 共 2812字 评论 1 条
69 计时器基础 计时器是一种输入设备,它周期性地每经过一个指定的时间间隔就用WM_TIMER消息通知应用程序一次。 可以通过调用SetTimer函数为Windows应用程序分配一个计时器。SetTimer有一个时间间隔范围为1~4294967295毫秒的整型参数,这个值指示Windows每隔多长时间给程序发送WM_TIMER消息。 当程序用完计时器时,就调用KillTimer函数停止计时器消息。 KillTimer调用清除消息队列中尚未被处理的WM_TIMER消息,从而使程序在调用...
阅读全文
2012-09-11 12:26 工业·编程 ⁄ 共 3652字 评论 1 条
60 鼠标基础 用GetSystemMetrics函数来确定鼠标是否存在: fMouse = GetSystemMetrics(SM_MOUSEPRESENT);   要确定所安装鼠标上键的个数,可使用: cButtons = GetSystemMetrics(SM_CMOUSEBUTTONS); //如果没有安装鼠标,返回0.   当Windows用户移动鼠标时,Windows在显示屏上移动一个称为“鼠标光标”的小位图。鼠标光标有一个指向显示屏上精确位置的单像素的“热点”。 Windows支持几种预定义的鼠标光标,程序可以使用...
阅读全文
2012-09-10 12:25 工业·编程 ⁄ 共 4298字 暂无评论
48 键盘基础 Windows程序获得键盘输入的方式:键盘输入以消息的形式传递给程序的窗口过程。 Windows用8种不同的消息来传递不同的键盘事件。 Windows程序使用“键盘加速键”来激活通用菜单项。加速键通常是功能键或字母同ctrl键的组合。Windows将这些键盘加速键转换为菜单命令消息。 程序用来从消息队列中检索消息的MSG结构包括hwnd字段。此字段指出接收消息的窗口句柄。消息循环中的DispatchMessage函数向窗口过程发生该消息,此...
阅读全文
2012-09-10 12:21 工业·编程 ⁄ 共 10275字 暂无评论
29 GDI基础 图形设备接口GDI是Windows的子系统,它负责在视频显示器和打印机上显示图形。 Windows NT中的图形主要由GDI32.DLL动态链接库输出的函数来处理。 GDI的主要目的之一是支持与设备无关的图形。 图形输出设备分为两大类:光栅设备和矢量设备。 大多数PC机显示器、打印机都是光栅设备。 绘图仪是矢量设备。 组成GDI的函数可以分为这样几类: ① 获取(或重建)和释放(或清除)设备描述表的函数; ② 获取有关设备描述表信...
阅读全文
2012-09-10 12:19 工业·编程 ⁄ 共 6609字 评论 1 条
16 有效矩形和无效矩形 窗口过程一旦接受到WM_PAINT消息之后,就准备更新整个客户区,但往往只需更新一个较小的区域。这个区域就称为“无效区域”。正是客户区内存在无效区域,才提示Windows将一个WM_PAINT消息放入消息队列。 Windows内部为每个窗口保存一个“绘图信息结构”,这个结构包含了包围无效区域的最小矩形的坐标以及其他信息,这个矩形就叫做“无效矩形”。 如果在窗口过程处理WM_PAINT消息之前,客户区又有一个区域变为无...
阅读全文
2012-09-10 12:16 工业·编程 ⁄ 共 4595字 评论 1 条
一 窗口和消息 1 WPARAM和LPARAM的意义    在Windows是一种16位系统时,WndProc的第三个参数被定义为WORD,是一个16位的无符号整数,而第四个参数被定义为一个LONG,是一个32位有符号整数,所以导致对单词PARAM(参数)加前缀W和L。     但在32位Windows中,WPARAM被定义为一个UINT,而LPARAM被定义为一个LONG,因此窗口过程的这两个参数都是32位的值。 2 前缀 前缀 全称 释义 C...
阅读全文
2012-09-10 12:13 工业·编程 ⁄ 共 831字 暂无评论
单例模式也是一种比较常见的设计模式,它到底能带给我们什么好处呢?其实无非是三个方面的作用: 第一、控制资源的使用,通过线程同步来控制资源的并发访问; 第二、控制实例产生的数量,达到节约资源的目的。 第三、作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不相关的两个线程或者进程之间实现通信。 比如,数据库连接池的设计一般采用单例模式,数据库连接是一种数据库资源。软件系统中使用...
阅读全文
2012-09-10 11:46 工业·编程 ⁄ 共 2505字 暂无评论
void CWindouDlg::OnButton1()  { // TODO: Add your control notification handler code here PlaySound(MAKEINTRESOURCE(IDR_WAVE1),AfxGetResourceHandle(),SND_ASYNC|     SND_RESOURCE|SND_NODEFAULT);//使用PlaySound需要包含头文件Header: Declared in mmsystem.h.                    &...
阅读全文
2012-09-10 11:45 工业·编程 ⁄ 共 2091字 暂无评论
这里列几个常见问题,应该对你理解和使用hash_map比较有帮助。 1.1 hash_map和map的区别在哪里? 构造函数:hash_map需要hash函数、等于函数;map只需要比较函数(小于函数).  存储结构:hash_map采用hash表存储,map一般采用红黑树(RB Tree)实现。因此其内存数据结构是不一样的。 1.2 什么时候需要用hash_map,什么时候需要用map? 总体来说,hash_map 查找速度会比map快,而且查找速度基本和数据量大小无关,属于常数级;而...
阅读全文