Programming Windows(5th)
文章平均质量分 80
lsfreeing
这个作者很懒,什么都没留下…
展开
-
1.宽字节字符集(unicode)和多字节字符集
多字节字符集和宽字节字符集一、多字节字符集每个字符的编码宽度都不等,可以是一个或多个字节1. ASCII字符只占用一个字节。2. 对于中文,日文等象形字,由于其数量庞大,一个字节无法全部容纳。所以用两个字节来表示一个字符。缺点:每次查找,都要从头到尾扫描,以确定字符的具体类型,效率低。优点:节省内存。二、每个字符的编码宽度都相等,均为2字节1.原创 2014-10-27 16:34:53 · 2883 阅读 · 0 评论 -
九、子窗口控件
控件简单说就是一个窗口。我们可以建立自己的子窗口控件,也可以用预定义窗口类别来建立标准子窗口控件。如按钮、复选框等。我们不要考虑这些按钮在显示或按下时自动闪烁等操作,这些由win内部完成。我们所要做的只是当按钮被按下时拦截WM_COMMAND消息。 普通窗口建立有注册窗口类等操作,但子窗口控件不要重新定义和注册,我们可以用CreateWindow,窗口样式参数准确定义了各控件的外观和功能。原创 2015-06-10 19:27:42 · 448 阅读 · 0 评论 -
八、定时器
8.1定时器基本知识 SetTimer:分配一个定时器,有一个间隔范围为1毫秒到4,294,967,295秒(约50天)的整形参数。指示间隔发送WM_TIMER的时间。 KillTimer:停止定时器消息。如我们可以调用该函数写一个只限用一次的定时器。该函数调用清除消息队列中未处理的WM_TIMER消息。系统和定时器 win本身处理硬件中断,应用程序无需处理。对于拥有定时器的程原创 2015-06-08 15:50:56 · 596 阅读 · 0 评论 -
六、键盘
6.1键盘基础 键盘以消息的形式传递给窗口过程。键盘事件就是一个消息将不同类型信息传递给应用程序。 win有八种信息传递不同键盘事件,但我们可以忽略至少一半。忽略键盘 简言之就是不用对所有键盘消息作出响应(如系统按键,一般带ALT)。同时对快捷键(如功能键,Ctrl+s)等,这些快捷键与程序菜单一起在程序资源描述文件中定义。Win将快捷键转换为菜单命令消息无需自行转换。谁获原创 2015-06-04 16:15:36 · 449 阅读 · 0 评论 -
8.1、鼠标
一、鼠标基础 通常我们认为键盘便于输入我操作文字数据,而鼠标便于画图和操作图形对象。我们可以使用GetSystemMetrics函数来确认鼠标是否存在,该函数具体请查阅MSDNfMouse=GetSystemMetrics(SM_MOUSEPRESENT);同样,确定鼠标上按键个数:cButtons=GetSystemMetircs(SM_CMOUSEBUTT原创 2015-03-30 14:59:30 · 485 阅读 · 0 评论 -
五、GDI图形基础
5.1 GDI结构 GDI是win子系统,主要负责显示图形。不只应用程序使用GDI,同时win本身也使用GDI显示 接口对象,如菜单、图标等。从程序写作角度来说,GDI由几百个函数调用和一系列相关数据结构组成。 GDI函数虽然众多,但主要可以分为几大类: 1、取得和释放设备内容的函数。如BeginPaint…EndPaint等 2、取得有关设备内容的函数。如GetTextM原创 2015-05-21 15:07:39 · 1093 阅读 · 0 评论 -
6.1、GDI映射模式
一、设备坐标和逻辑坐标在Windows应用程序中,有两种坐标系统:设备坐标和逻辑坐标。 设备坐标:又称物理坐标,指输出设备上的坐标。通常将屏幕上的设备坐标称为屏幕坐标,以像素为度量单位。水平轴(X轴)的正方向从左向右,垂直轴(Y轴)的方向从上向下,并且整个坐标轴的单位和方向固定不变。windows包括三种设备坐标,以满足不同需要:1、客户区坐标 2、全窗口坐标 3、屏幕坐标 逻辑坐原创 2015-03-23 15:42:22 · 630 阅读 · 0 评论 -
二、Unicode简介
2.1字符集简史 最初的ASCII在开发过程中,对确定长度是6,7或者8位产生了争议。最后确定了字符有26个小写26大写加数字等共128个字符,也就是7位长度。很明显这些字符不适用于非美国英语以外的语言,于是增加到了8位,共256个字符。也就是说如果要使用一个字节保存字符,则要128个(2^7)附加字符来补充ASCII。 ASCII码( SBCS ) ASCII 码使用指定的7 位或8原创 2015-04-07 10:40:33 · 602 阅读 · 0 评论 -
四、文本和输出
4.1绘制和更新 我们已经知道,在窗口的显示区域绘制文字和图形,windows通过发送WM_PAINT消息来通知窗口显示区域需要重绘再论WM_PAINT消息 除了UpdateWindow调用时发送第一个WM_PAINT消息之外。窗口消息处理函数应在任何时候都准备好处理此类消息。当如下几类情况发生时,窗口过程会接收到WM_PAINT消息。 1、移动或显示窗口,之前被隐藏的区域重新可见原创 2015-04-23 15:02:31 · 308 阅读 · 0 评论 -
4.2、消息映射机制原理
一、消息映射原理 SDK中每个窗口类都有一个窗口过程,与之不同的是:所有MFC窗口都有一个默认的窗口过程。SDK中没有消息映射的概念,它有明确的回调函数,通过一个switch语句去判断收到的消息然后进行消息处理。对于消息映射,这里有不同的几种猜想: 1、最直截了当的想法是、消息映射就是用一个数据结构把“消息”和“响应函数”串连起来,当窗口感知消息时,就对结构进行查找,找到相应的消息转载 2015-03-18 16:53:00 · 454 阅读 · 0 评论 -
3.1 面向对象的窗口类的封装
汽车产业生产初期,靠手工制件,所以效率极低; 随着工业发展,引入了汽车生产线,从而汽车可以批量生产,生产力水平大大提高。同理,如果我们每次创建窗口,都要完成上百行代码,如果创建多的话,重复工作量太大。并且随着代码的增多,可读性也差 。所以说我们封装自己的一个窗口类,用这个窗口类批量,快速的创建窗口。这个我们可以参考古代的印刷术。我们参照MFC框架进行封装:一来可以提高代码的可读性和重用性;原创 2014-11-13 08:56:33 · 1177 阅读 · 0 评论 -
4.1内部运行机制-消息映射
一、一些基本概念1、几个重要头文件afx.h 绝大部分类的声明头文件afxwin.h 包含了afx.h和windows.hafxext.h -提供了扩展窗口类的支持(工具栏,状态栏等2、使用MFC做自己的库程序(MFCAppWizard dll)规则动态库:可以被任意程序调用扩展动态库:只能被支持MFC的程序调用3、MFC窗口程序转载 2015-03-13 16:24:47 · 560 阅读 · 0 评论 -
5.2、双缓冲绘图
一、双缓冲原理 我们知道,如果窗体在响应WM_PAINT消息的时候要进行复杂的图形处理,那么窗体在重绘时由于过频的刷新而引起闪烁现象。为了解决这个问题,我们利用双缓冲技术进行绘图。所谓双缓冲技术,就是将资源加载到内存,然后复制内存数据到设备DC(比较快),避免了直接在设备DC上绘图(比较慢)。我们可以把windows桌面比作一个黑板.1、Windows 绘图原理 我们在 Windo转载 2015-03-20 16:22:44 · 529 阅读 · 0 评论 -
5.1、GDI图形接口
一、GDI简介 GDI(GraphicsDevice Interface),即图形设备接口。主要负责系统与绘图程序之间的信息交换,处理所有Windows程序的绘图输出。 在window操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI提供的函数就可以方便的在屏幕、打印机等输出设备输出图形,文本等操作。GDI使程序员无需关心硬件设备及驱动,就可以将应用程序的输出转换为硬转载 2015-03-20 09:11:26 · 857 阅读 · 0 评论 -
7.1、键盘
键盘和鼠标是两个标准的用户输入源,在一些交叠的操作中通常相互补充使用。1.1输入方式:以消息的形式传递给程序的窗口处理过程。Windows用8种不同的消息来传递不同的键盘事件。这好像有点多,但是程序可以忽略其中至少一半的消息而不会有任何问题。并且,在大多数情况下,这些消息中包含的键盘信息会多于程序所需要的。处理键盘的部分工作就是识别出哪些消息是重要的,哪些是不重要的。 1.2扫转载 2015-03-26 14:54:35 · 597 阅读 · 0 评论 -
3.2一Wnd窗口基类的设计
编写面向对象的Windows应用程序并不容易,主要是因为Windows API没有设计为支持面向对象的语言。例如,Windows消息处理函数属于全局函数,该函数中仅仅指明了窗口句柄,但没有指明传入窗口对象指针。同时,C++编译器不允许传入一个普通的成员函数做为回调函数。我们可以采用一个变通的方法,在回调函数里设置一个虚成员函数,让该虚函数全权处理窗口消息。也就是说,这个虚成员函数成了真正的消息原创 2014-11-17 09:54:26 · 722 阅读 · 0 评论 -
2.Windows窗口和消息
二、Windows窗口1.Windows内部运行机制设计窗口类 -> 注册窗口类 -> 创建窗口 -> 显示更新窗口 -> 消息循环 -> 处理消息 注册公司 -> 创建公司 –> 公司开张 -> 接收业务往来 -> 办理业务 2.Windows窗口消息(windows程序设计3.2.2)1.进队消息 进队原创 2014-10-29 15:32:04 · 519 阅读 · 0 评论 -
三、窗口与消息
首先上代码,下面讨论都根据此展开.#include "stdafx.h"#include #include //窗口创建时播放声音所要包含的头文件#pragma comment(lib,"winmm.lib")LRESULT CALLBACK WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam );in原创 2015-04-09 16:53:36 · 452 阅读 · 0 评论