Windows编程总结Word文件下载.docx
- 文档编号:21603607
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:79
- 大小:67.03KB
Windows编程总结Word文件下载.docx
《Windows编程总结Word文件下载.docx》由会员分享,可在线阅读,更多相关《Windows编程总结Word文件下载.docx(79页珍藏版)》请在冰豆网上搜索。
第2节控件的创建和使用……………………………………………………...30
第3节控件的消息……………………………………………………………...30
第4节Windows常用控件
1、概述………………………………………………………………………….32
2、静态控件…………………………………………………………………….33
3、按钮………………………………………………………………………….34
4、编辑框………………………………………………………………………37
5、列表框………………………………………………………………………40
6、组合框………………………………………………………………………42
7、滚动条(Scrollbar)…………………………………………………………44
8、滑动条………………………………………………………………………45
9、旋转按钮……………………………………………………………………49
10、动画控件(Animatecontrol)……………………………………………50
11、进度条(Progressbar)……………………………………………………52
第5节通用对话框简介………………………………………………………..55
第6节几个设计与应用技巧
1、关于使用自定义消息……………………………………………………..58
2、在一个应用程序中加载其它的应用程序………………………………..60
3、关于调试一个MFCWindows程序………………………………………60
附录1部分API函数说明………………………………………………………..63
附录2英文关键词的解释………………………………………………………...63
附录3winuser.h中包含的一些内容……………………………………………...63
附录4编程的琐碎知识…………………………………………………………...64
一、Windows编程基础知识
1、MFC:
微软基础类库(MicrosoftFoundationClasses),是一整套封装好的,用于windows编程的类库,它对windows大部分API进行了封装,故用户只需从这些类集成生成实例或直接生成实例,而不用与底层的API函数打交道,从而提高了编程效率。
应该说MFC是VisualC++面向对象Windows程序的主体部分。
2、Windows编程特点:
1)消息驱动机制
消息(Message)就是关于发生事件的信息。
消息驱动就是由消息来驱动或相应某个函数,而消息驱动程序设计是围绕着消息的产生与处理而展开的。
而DOS程序则是过程驱动的。
Windows系统中已经预定义了7000多条消息,用户可在VisualC++的winuser.h(安装目录下的VC98\Include文件夹中)中找到这些宏定义。
Windows消息的类型有:
键盘消息、鼠标消息、系统消息、用户自定义消息。
其中前3种消息为系统预定义消息,这些消息的取值范围为0x0000~0x03ff和0x8000~0xbfff(Windows系统保留使用);
用户自定义消息则可以分为自定义内部消息和自定义外部消息,内部消息的取值范围为:
0x0400~0x7fff,外部消息的取值范围为0xc000~0xffff;
2)图形设备接口GDI(GraphicalDeviceInterface)与设备驱动程序实现了与设备无关的操作。
在MFC中,DC和GDI对象的基类分别是CDC和CGdiObject,文字和图形的输出可由CDC和CGdiObject类的相关成员函数实现。
3)基于资源的程序设计
Windows应用程序常常包含众多图形元素,如光标、工具栏、位图、对话框,在Windows环境下,每一个这样的元素都作为一种可以装入应用程序的资源来存放。
4)动态链接技术
许多Windows应用程序广泛采用DLL(DynamicLinkingLibrary:
动态链接库)技术。
DLL的实质是一个可执行模块,但它本身不能自己运行,使用时需将它驻留内存有其他应用程序调用,使用完毕后可将其从内存中释放。
DLL文件的位置可以是Windows/System文件夹、PATH所指定的文件夹或当前应用程序所在的文件夹。
5)多任务机制
当用户同时在Windows程序中打开多个窗口或边听音乐边工作时,Windows本身正在忙碌地进行各应用程序的切换,分时地工作着。
对于只有单个CPU的机器来说,无论在任何时候,其中只有一个程序可以真正占有CPU。
Windows多任务机制使用进程(Process)和线程(Thread)的概念。
进程是应用程序的一个运行实例,线程是进程中的一个执行单元。
一个进程至少要有一个主线程,当然也可以有若干线程,程序运行后,首先执行主线程。
6)内存管理技术
MS-DOS和Windows3.2等16位操作系统使用分段体系结构进行内存管理,Win32(Windows95及以上版本)则采用线性体系结构进行内存管理。
3、在Windows编程中也可以用到C语言的相关知识;
比如说利用fopen打开文件等。
二、VC++集成开发环境的使用
1、VC++6.0不仅仅是一个C++编译器,而且是个基于Windows操作系统的可视化集成开发环境IDE(IntegratedDevelopmentEnvironment)。
2、VC++6.0中三种常用的工程。
分别是:
Win32ConsoleApplication,Win32Application,MFCAppWizard(MFC应用程序向导)
(1)Win32ConsoleApplication工具是基于DOS控制台程序的设计与开发。
(2)Win32Application工具适用于WindowsAPI程序或MFCWindows程序的设计与开发。
1)API(ApplicationProgramInterface:
应用程序接口)Windows编程,其实质是程序内的一套函数的调用。
虽然它编程比较复杂,但代码执行效率极高,是开发Windows实时程序的首选。
最小的APIWindows程序由两个函数组成:
一个是WinMain(类似于main函数,它是Windows应用程序的入口,名字不能改变);
另一个是窗口处理函数WndProc(名字可以由用户定义)
2)用于创建手工方式从底层编写的MFCWindows程序。
与APIWindows程序操作步骤不同的是,其在编译链接程序之前,要选择:
Project->
Settings…命令,在显示对话框的MicrosoftFoundationClasses的列表框中选择UseMFCinaStaticLibrary或UseMFCinaSharedDLL。
这是因为本例是面向对象的MFCWindows,所以要使用微软的MFC类库(静态库和动态库均可)。
三、MFC的体系结构
1、CObject类是MFC的基类。
2、SDI应用程序框架的4个主要的类:
CWinApp、CFrameWnd、CDocument、CView。
3、CWnd类隐藏了消息循环和WndProc的主要功能;
CWinApp类很大程度上隐藏了APIWindows程序中WinMain函数。
每个用MFC编写的Windows程序必须有一个它的派生类的对象。
四、Windows编程常用的扩充数据类型
1、常用基本数据类型
1)BOOL(int):
32位布尔值,真用TRUE表示,假用FALSE表示;
2)INT(int):
32位带符号整数;
3)BYTE(unsignedchar):
8位无符号数;
4)COLORREF(unsignedlong):
它用作表示颜色的32位值。
在WindowsAPI中的RGB宏,它返回的就是这种类型。
格式:
COLORREFRGB(BYTEr,BYTEg,BYTEb)
常见的颜色:
紫RGB(255,0,255)青RGB(0,255,255)
灰RGB(128,128,128)
5)PARAM(long):
它作为参数传给窗口函数的32位整数(MSG结构第4个数据项);
6)WPARAM(unsignedint):
它作为参数传给窗口函数的32位无符号整数(MSG结构第3个数据项);
7)LONG(long):
8)UINT(unsignedint):
32位无符号整数;
9)LPSTR(char*):
指向字符串的32位指针;
10)LPCTSTR(constchar*):
指向字符串常量的32位指针;
11)LPVOID(void*):
指向未定义类型的32位指针;
12)LRESULT(long):
来自窗口或回调函数的32位指针;
注:
由WindowsOS直接调用的函数叫做回调函数
13)WORD(unsignedshort):
16位无符号整数;
14)DWORD(unsignedint):
15)FARPROC:
32位指向函数的指针;
2、常用的公共句柄类型:
句柄(Handle)是对象的标识或是对资源的间接应用(常用资源如MOUSE光标、菜单等)。
1)HCURSOR:
MOUSE光标句柄;
2)HICON:
图标句柄;
3)HMENU:
菜单句柄;
4)HWND:
窗口句柄;
此数据类型常表示Windows环境中所打开的窗口句柄,使用该句柄相当于引用该窗口;
5)HBRUSH:
画刷句柄;
6)HDC:
设备环境句柄;
7)HFONT:
字体句柄;
8)HINSTANCE:
应用程序实例句柄;
9)HPEN:
指向线型的画笔句柄;
10)HANDLE:
一般句柄。
可用于Windows操作系统所建立的某个对象的句柄;
11)HBITMAP:
位图句柄。
用于保存位图的内存区域句柄;
12)HDLG:
对话框句柄;
13)HPALETTE:
用于颜色的调色板句柄;
14)HRGN:
剪切区域句柄;
3、常用的结构(体)类型
1)POINT结构(点结构):
typedefstructtagPOINT
{
intx;
inty;
}POINT;
2)RECT结构(矩形结构):
RECT结构用于定义一个左上角坐标和右下角坐标。
typedefstructtagRECT
intleft;
inttop;
intright;
intbottom;
}RECT;
3)SIZE结构(尺寸结构):
SIZE结构用于存放窗口、视图(窗口中的矩形绘图区)、文本、位图的尺寸(水平宽度和垂直高度)
typedefstructtagSIZE
{
intcx;
intcy;
}SIZE;
五、几个简单的MFC数据类型类
下面给出的4个简单MFC数据类型类均为非CObject派生类,他们是Windows编程中使用频繁的类。
1、CString类(字符串类)
1)CString:
:
GetLength:
获取CString对象中存放字符的个数,它返回一整数值;
2)CString:
IsEmpty:
若CString对象长度为0,则为真,否则为假;
3)CString:
TrimLeft:
删除字符串左边的空白字符(空格、Tab及空行);
4)CString:
TrimRight:
删除字符串右边的空白字符(空格、Tab及空行);
2、CPoint类(点类):
使用方法和WindowsPOINT结构相似;
3、CRect类(矩形类):
使用方法和WindowsRECT结构相似;
1)CRect:
Height:
以下部坐标值减去上部坐标值计算CRect高度,结果可能为负,并返回CRect的高度;
intHeight()const;
2)CRect:
Width:
以右坐标值减去左坐标值计算CRect宽度,结果可能为负,并返回CRect的宽度;
intWidth()const;
4、CSize类(尺寸类):
使用方法和WindowsSIZE结构相似;
六、MFCWindows应用程序消息处理机制的建立
1、建立消息处理机制必须遵循一定的规范,该规范可归纳为3个方面:
1)声明消息映射
若希望能进行消息处理的类具有接收消息的能力,则需要在该类的末尾加上消息映射说明,其语法格式如下:
DECLARE_MESSAGE_MAP()
从原理上讲,所有从CCmdTarget类开始及派生的类都具有消息处理的能力。
2)建立消息与处理函数之间的映射
建立消息与处理函数间映射关系的宏定义格式如下:
BEGIN_MESSAGE_MAP(子类名,父类名)
ON_...([消息名或控制号,处理函数名])//根据消息的多少定义若干个
END_MESSAGE_MAP()
消息映射宏定义的作用:
将一个消息与一个处理函数关联起来,以便该消息处理函数或相应函数对相应的消息作出响应。
3)在进行消息处理的类中定义各消息处理函数
消息处理函数原型的一般形式:
Afx_msg类型函数名(WPARAMwParam,LPARAMlParam);
七、MFCWindows程序(SDI)的执行过程
用Win32Application工程创建的MFCWindows程序(SDI)的执行过程:
首先生成应用程序对象MyApp,然后调用InitInstance虚拟函数对应用程序进行初始化。
显示窗口后,程序便进入了消息循环。
在InitInstance函数中,m_pMainWnd为MFC预定义的公有指针型数据成员,它是指向CWnd型的对象指针,用于指向应用程序的主窗口。
八、用MFCAppWizard(exe)向导开发基于框架结构的MFCWindows程序
1、1)AppWizard(应用程序向导)是一个代码发生器。
2)AppStudio(应用程序工作室)是一个资源编译器(对应于Workspace工作区的ResourceView资源视图卡片),用于创建、编辑和编译应用程序资源。
3)ClassWizard(类向导)利用其可以往AppWizard所产生的应用程序框架中添加新的类和函数等。
2、MFCWindows程序开发中,程序框架中常新增以下3个重要函数:
1)CView:
OnDraw(绘制函数)
功能:
提交并显示当前文档的图形;
另外它还可以用于图形及文本输出;
A.当应用程序窗口状态或大小发生变化时,系统将调用此函数重新绘制视图/文档窗口。
B.该函数通常也被WM_PAINT消息(应用程序窗口状态或大小发生变化,产生此消息)激活。
但应用程序有OnPaint消息处理函数时,只响应OnPaint函数,不响应OnDraw函数。
CWnd:
Invalidate函数用于向客户区发送WM_PAINT消息;
C.该函数具有与设备无关性。
既可以实现屏幕显示的绘制,又可以实现在打印设备上的绘制。
2)CWnd:
PreCreateWindow(虚函数)
通过修改CREATESTRUCT结构(在winuser.h文件中可以找到)可重新对窗口风格进行设置。
3)CObject:
Serialize(串行化函数)
功能:
从一个文件中读出一个对象,或将一个对象写入一个文件中;
从原理上讲,所有从CObject类中派生出来的类都可以实现串行化;
CArchive对象可理解为CFile对象的缓存,它与CFile对象结合,通过串行化实现对象的存储。
CArchive无基类,它有一个重要的成员函数IsStoring,用于标记存盘还是读盘。
CArchive:
IsStoring
BOOLIsStoring()const存盘时返回非0,读盘时返回0。
第一节基本知识
1、Windows是支持GUI的操作系统,在Windows中没有文本方式,其文本和图形的输出均在图形方式下进行。
在Windows中,显示硬件与应用程序分离了,其中关键技术就是使用了设备驱动程序。
用户只需使用CDC及GDI函数,而不必关心硬件的具体细节。
2、在相当多的情况下,用户一般不需要编写非用户区鼠标消息的处理代码,这些处理一般可由Win32DefWindowProcAPI函数去完成。
注意:
鼠标消息处理函数均为CWnd的成员函数。
3、对于非用户区消息,WM_NCHITTEST(击键测试)消息的处理函数也许会用得上,其原型及说明如下:
原型:
afx_msgUINTOnNcHitTest(CPointpoint);
一旦鼠标进入非用户区,就产生WM_NCHITTEST消息,程序根据消息映射响应OnNcHitTest函数,返回值说明鼠标的位置属性。
4、常用的按键消息及字符消息如下:
WM_KEYDOWN按下非系统键
WM_KEYUP松开非系统键
WM_SYSKEYDOWN按下系统键
WM_SYSKEYUP松开系统键
WM_CHAR输入非系统字符
WM_SYSCHAR输入系统字符
说明:
1)系统键一般是指:
Alt键、Alt+字符键构成的组合键,主要用于操作系统菜单等;
2)按下字符键时,依次产生WM_KEYDOWN、WM_CHAR、WM_KEYUP这3个消息;
3)按下F0~F11各功能键时及CapsLock等没有相应字符的键时,依次产生WM_KEYDOWN、WM_KEYUP两个消息;
4)按下Alt键时,则依次产生WM_SYSKEYDOWN、WM_SYSKEYUP两个消息;
5)按下Alt+字符组合键时,则依次产生WM_SYSKEYDOWN、WM_SYSCHAR、WM_SYSKEYUP这3个消息。
第二节CDC类常用文本输出成员函数
1、CDC:
TextOut
virtualBOOLTextOut(intx,inty,LPCTSTRlpszString,intnCount);
或
BOOLTextOut(intx,inty,constCString&
str);
参数:
(x,y)为文本起点逻辑坐标,lpszString为指向要输出的字符串,nCount为字符串长度,str为指定要输出的CString对象,其中包括要输出的字符串。
举例:
pDC->
TextOut(120,0,"
Youareastudent"
);
2、CDC:
TabbedTextOut
该函数用于带“\t”制表符文本串的分栏输出。
virtualCSizeTabbedTextOut(intx,inty,LPCTSTRlpszString,intnCount,intnTabPosition,LPINTlpnTabStopPosition,intnTabOrigin);
CSizeTabbedTextOut(intx,inty,constCString&
str,intnTabPosition,LPINTlpnTabStopPosition,intnTabOrigin);
nTabPosition为制表停止位数组中的值的个数;
lpnTabStopPosition为指向制表停止位的数组;
nTabOrigin为制表停止位开始扩展处的逻辑x坐标(即各制表停止位实际逻辑坐标为相应停止位数组元素加上此参数)。
其它参数与1相同。
inttabs[3]={40,80,120};
intyHeight=40;
for(inti=0;
i<
5;
i++)
pDC->
TabbedTextOut(0,yHeight*(i+5),"
You\tare\ta\tstudent"
3,tabs,i*10);
3、CDC:
DrawText
virtualintDrawText(LPCTSTRlpszString,intnCount,LPRECTlpRect,UINTnFormat);
intDrawText(constCString&
str,LPRECTlpRect,UINTnFormat);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows 编程 总结