Windows程序设计
进击的横打
此人不懒,但也什么都没有写
展开
-
第二章 Unicode简介
2.1字符集简史ASCII码使用8位字符集,而Unicode使用全16位字符集,这使得Unicode能够表示世界上所有的书写语言中可能用于计算机通讯的字符、象形文字和其它符号。那么如何容纳象形文字语言而仍保持和ASCII的某种兼容性呢?答案是双字节字符集(DBCS)。正因为各个国家的字符集都是不一样的,比如代码页932(日文) 、936(简体中文) 、949(韩语)和950(繁体汉字)。只有为原创 2009-11-13 16:43:00 · 904 阅读 · 0 评论 -
第九章 子窗口控件part2
9.3静态类别:在CreateWindow函数中指定窗口类别为「static」静态类别还包括了窗口样式SS_ICON和SS_USERITEM,但是当它们被用作子窗口控件时却没有任何意义。在CreateWindow程序中指定视窗类别为「static」,您就可以建立静态文字的子视窗控制项。这些子视窗非常「文静」。它既不接收滑鼠或键盘输入,也不向父视窗发送WM_COMMAND讯息。 9.原创 2009-12-04 15:36:00 · 1119 阅读 · 0 评论 -
第十章 菜单及其它资源part1
资源不能从程序原始码中定义的变量直接存取,Windows提供函数直接或间接地把它们加载内存以备使用。代表函数:即LoadIcon和LoadCursor。它们从Windows中加载二进制图标和光标映象,并传回该图标或光标的句柄。 10.1 图标、光标、字符串和自订资源 将图标添加到程序RESOURCE.H:列出了程序的所有资源和一个让程序引用资源的表头文件.扩展名为RC的文件原创 2010-04-14 09:53:00 · 905 阅读 · 0 评论 -
第十章 菜单及其它资源part2
10.2菜单当使用者选择一个菜单项时,Windows给您的程序发送包含该ID的WM_COMMAND消息。 菜单概念窗口的菜单列紧接在标题列的下方显示,这个菜单列有时被称为「主菜单」或「顶层菜单」。菜单结构 顶层菜单有一个菜单句柄,在顶层菜单中的每一个弹出式菜单也有它自己的菜单句柄。 系统菜单(也是一个弹出式菜单)也有菜单句柄。菜单中的每一项都有三个特性 1.菜原创 2010-04-14 17:06:00 · 866 阅读 · 0 评论 -
第十章 菜单及其它资源part3
较难的一种菜单定义方法在程序的资源描述文件中定义菜单,通常是在您的窗口中添加菜单的最简单方法,但不是唯一的方法。如果您没有使用资源描述档,那么可以使用CreateMenu和AppendMenu两个函数在程序中建立菜单。在您定义完菜单后,您可以将菜单句柄发送给CreateWindow或者使用SetMenu来设定窗口的菜单。hMenuPopup = CreateMenu () ;原创 2010-04-15 11:37:00 · 755 阅读 · 0 评论 -
第十章 菜单及其它资源part4
键盘快捷键 快捷键是产生WM_COMMAND消息(有些情况下是WM_SYSCOMMAND)的键组合。 为什么要使用快捷键Windows将键盘消息发送给目前活动窗口的窗口消息处理程序。然而对于快捷键,Windows把WM_COMMAND消息发送给窗口消息处理程序.该窗口消息处理程序的句柄在Windows函数TranslateAccelerator中给出快捷键中,应该避免使用Tab、E原创 2010-04-15 15:34:00 · 747 阅读 · 0 评论 -
第十一章 对话框part1
模态对话框对话框的资源信息//第一行给出了对话框的名称//前两个数字是对话框左上角的x、y坐标//后两个数字是对话框的宽度和高度。ABOUTBOX DIALOG DISCARDABLE 32, 32, 180, 100//模板中的STYLE叙述类似于CreateWindow呼叫中的style字段//对于模态对话框,通常使用WS_POPUP和DS_MODALFRAM原创 2010-04-16 15:56:00 · 789 阅读 · 0 评论 -
第十一章 对话框part2
更复杂的对话框 ABOUT2.CPP#include #include "resource.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM) ; BOOL CALLBACK AboutDlgProc(HWND, UINT, WPARAM, LPARAM);int iCurrentColor =原创 2010-04-19 10:05:00 · 846 阅读 · 0 评论 -
第十一章 对话框part3
11.2非模态对话框非模态对话框允许使用者在对话框与其它程序之间进行切换,又可以在对话框与建立对话框的窗口之间进行切换。当使用者觉得让对话框保留片刻会更加方便时,使用非模态对话框是合适的。非模态对话框是使用CreateDialog来建立的,该函数所使用的参数与DialogBox相同。hDlgModeless = CreateDialog ( hInstance, szTemplate, h原创 2010-04-20 10:54:00 · 992 阅读 · 0 评论 -
第十一章 对话框part4
11.3通用对话框POPPAD.cpp #include #include #include "resource.h" #define EDITID 1#define UNTITLED TEXT("(untitled)") LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);原创 2010-04-20 11:52:00 · 1002 阅读 · 0 评论 -
第十二章 剪贴簿
12.1剪贴簿的简单使用标准剪贴簿数据格式Windows支持不同的预先定义剪贴簿格式, 这些格式在WINUSER.H定义成以CF为前缀的标识符。 ■三种能够储存在剪贴簿上的文字数据型态:①CF_TEXT 以NULL结尾的ANSI字符集字符串。它在每行末尾包含一个carriage return和linefeed字符,这是最简单的剪贴簿数据格式。②CF_OEMTEXT原创 2010-04-20 16:53:00 · 1209 阅读 · 0 评论 -
第二十一章 动态链接库
多数与Windows相关的磁盘文件如果不是程序模块,就是动态链接程序。21.1动态链接库的基本知识动态链接库并不能直接执行,也不接收消息。它们一些独立的文件,其中包含能被程序或其它DLL呼叫来完成一定作业的函数。只有在其它模块呼叫动态链接库中的函数时,它才发挥作用。 在程序开发中,您将各种目标模块(.OBJ)、执行时期链接库(.LIB)文件,以及经常是已编译的资源(.RES)文件连结在原创 2010-04-22 15:44:00 · 1158 阅读 · 0 评论 -
第十三章 使用打印机
限用在打印机上的函数(StartDoc、EndDoc、StartPage和EndPage)负责将打印机的输出组织打印到纸页上。而一个程序呼叫普通的GDI函数在一张纸上显示文字和图形和在屏幕上显示的方式一样。打印入门在Windows下使用打印机时,实际上启动了一个包含GDI32动态链接库模块、打印驱动程序动态连结模块(带.DRV扩展名) 、Windows后台打印程序,以及有用到的其它相关模块原创 2010-04-22 09:32:00 · 2313 阅读 · 0 评论 -
第八章 定时器part1
8.1定时器入门可以通过呼叫SetTimer函数为您的Windows程序分配一个定时器。SetTimer有一个时间间隔范围为1毫秒到4,294,967,295毫秒(将近50天)的整数型态参数,这个值指示Windows每隔多久时间给您的程序发送WM_TIMER消息。当您的程序用完定时器时,它呼叫KillTimer函数来停止定时器消息。系统和定时器:Windows应用程序不拦截BIOS中断原创 2009-12-04 09:50:00 · 759 阅读 · 0 评论 -
第八章 定时器part2
8.3 定时器用于时钟建立数字时钟#include #define ID_TIMER 1 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,原创 2009-12-04 10:35:00 · 823 阅读 · 0 评论 -
第三章 窗口和消息
3.1自己的窗口建立窗口很需呼叫CreateWindow函数.窗口以「消息」的形式接收窗口的输入,窗口也用消息与其它窗口通讯。程序建立的每一个窗口都有相关的窗口消息处理程序。「Windows给程序发送消息。是指Windows呼叫程序中的一个函数,该函数的参数描述了这个特定消息。这种位于Windows程序中的函数称为「窗口消息处理程序」。Windows通过呼叫窗口消息处理程序来给窗口发送消原创 2009-11-16 09:13:00 · 722 阅读 · 0 评论 -
第四章 输出文字part2
4.4建立更好的滚动:Win32 API介绍的两个滚动条函数称作SetScrollInfo和GetScrollInfo。这些函数可以完成以前函数的全部功能,并增加了两个新特性。SetScrollInfo (hwnd, iBar, &si, bRedraw) ;GetScrollInfo (hwnd, iBar, &si) ;Bar参数是SB_VERT或SB_HORZ,它还可以是用于滚原创 2009-11-16 12:52:00 · 660 阅读 · 0 评论 -
第四章 输出文字part1
4.1绘制和更新以下情况下窗口消息处理程序会接收到一个WM_PAINT消息:1.在使用者移动窗口或显示窗口时,窗口中先前被隐藏的区域重新可见。2.使用者改变窗口的大小(如果窗口类别样式有着CS_HREDRAW和CS_VREDRAW位旗标的设定)。3.程序使用ScrollWindow或ScrollDC函数滚动显示区域的一部分。4.程序使用InvalidateRect或InvalidateRgn函原创 2009-11-16 10:03:00 · 827 阅读 · 0 评论 -
第一章 开始(编写第一个WINDOWS程序)
编写第一个WINDOWS程序Windows关于「hello, world」程序#include int WINAPI WinMain (HINSTANCE hInstance, //执行实体句柄 HINSTANCE hPrevInstance, //传给WinMain的第二个参数总是NULL PSTR szCmdLine, //用于执行程序的命令列原创 2009-11-13 16:38:00 · 863 阅读 · 0 评论 -
第五章 图形基础part1
图形设备接口(GDI:Graphics Device Interface)是Windows的子系统,它负责在视讯显示器和打印机上显示图形。GDI的主要目的之一是支持与设备无关的图形。5.1GDI 的结构GDI原理:Windows 98和Microsoft Windows NT中的图形主要由GDI32.DLL动态链接库输出的函数来处理。图形输出设备分为两大类:位映像设备和向量设备。大多数原创 2009-11-17 15:50:00 · 759 阅读 · 0 评论 -
第五章 图形基础part2
5.3画点和线设定图素:SetPixel(hdc, x, y, crColor) ;//在指定的x和y坐标以特定的颜色设定图素.最后一个参数是COLORREF型态指定了颜色。crColor = GetPixel(hdc, x, y) ;//传回指定坐标处的图素颜色直线:Windows可以画直线、椭圆线(椭圆圆周上的曲线)和贝塞尔曲线。MoveToEx(hdc, xBeg, yB原创 2009-11-17 16:32:00 · 861 阅读 · 0 评论 -
第五章 图形基础part4
5.6矩形、区域和剪裁 矩形函数:FillRect (hdc, &rect, hBrush) ;//用指定画刷来填入矩形FrameRect (hdc, &rect, hBrush) ;//使用画刷画矩形框,但是不填入矩形InvertRect (hdc, &rect) ;//将矩形中所有图素翻转,1转换成0,0转换为1,该函数将白色区域转变成黑色,黑色区域转变为白色,绿色区域转变成洋红色。原创 2009-11-19 13:13:00 · 794 阅读 · 0 评论 -
第五章 图形基础part3
5.4绘制填入区域Windows将HBRUSH定义为画刷的句柄hBrush = GetStockObject(GRAY_BRUSH);呼叫SelectObject将它选进设备内容SelectObject(hdc, hBrush);画一个没有边界框的图形SelectObject(hdc, GetStockObject(NULL_PEN)) ;画出图形的边界框,但不填入内部SelectObjec原创 2009-11-19 11:09:00 · 894 阅读 · 0 评论 -
第六章 键盘part1
6.1键盘基础键盘输入以消息的形式传递给程序的窗口消息处理程序。忽略键盘:虽然呼叫程序菜单的按键将通过窗口的窗口消息处理程序,但通常内定的处理方式是将按键传递给DefWindowProc。谁获得了焦点:接收特定键盘事件的窗口具有输入焦点。输入焦点的概念与活动窗口的概念很相近。有输入焦点的窗口是活动窗口或活动窗口的衍生窗口。窗口消息处理程序通过拦截WM_SETFOCUS和WM_K原创 2009-11-24 08:47:00 · 1055 阅读 · 0 评论 -
第六章 键盘part2
6.3字符消息四类字符消息:非系统字符WM_CHAR和WM_DEADCHAR消息是从WM_KEYDOWN得到的;而系统字符WM_SYSCHAR和WM_SYSDEADCHAR消息是从WM_SYSKEYDOWN消息得到的。在大多数情况下,Windows程序会忽略除WM_CHAR之外的任何消息。伴随四个字符消息的lParam参数与产生字符代码消息的按键消息之lParam参数相同。如果您的窗口消息原创 2009-11-24 09:57:00 · 1049 阅读 · 0 评论 -
第七章 鼠标part1
7.1鼠标基础:GetSystemMetrics函数来确认鼠标是否存在fMouse = GetSystemMetrics(SM_MOUSEPRESENT)确定所安装鼠标其上按键的个数cButtons = GetSystemMetrics(SM_CMOUSEBUTTONS);使用SystemParametersInfo函数可以设定或获得设定鼠标的参数。一些简单的定义:IDC_CROS原创 2009-11-26 13:15:00 · 926 阅读 · 0 评论 -
第七章 鼠标part2
7.5拦截鼠标一个窗口消息处理程序通常只在鼠标光标位于窗口的显示区域,或非显示区域上时才接收鼠标消息。所以应该只有当鼠标按键在您的显示区域中被按下时才拦截鼠标;当鼠标按键被释放时,才释放鼠标拦截。拦截鼠标并非只适用于那些古怪的应用程序。如果您需要鼠标按键在显示区域按下时都能够追踪WM_MOUSEMOVE消息,并直到鼠标按键被释放为止,那么您就应该拦截鼠标。BLOKOUT2:#inclu原创 2009-11-26 14:57:00 · 1237 阅读 · 1 评论 -
第二十章 多任务和多线程
第二十章 多任务和多线程原创 2010-07-05 16:18:00 · 1389 阅读 · 0 评论