- 博客(45)
- 收藏
- 关注
原创 资源描述文件
资源描述文件(rc文件)是以文字描述资源的文件。这些文字要经过资源编译器才能产生可用的二进制代码,并以各种扩展名存在,如.ico、.bmp、.cur等。所谓的资源是指菜单、对话框、图标、光标形状等。常用的资源有Accelerator、Dialog、Icon、Menu和String Table。对资源文件的调用,一般都在窗口初始化部分完成。在同一个Windwo
2013-04-19 23:32:14 11844
原创 模块定义文件
Windows程序都有一个模块定义文件,其将模块名称、程序段和数据段的内存需求、模块堆(heap)大小、堆栈(stack)大小及所有回调(callback)函数名称等都记录下来。模块定义文件(.def文件)指导Windows连接程序进行连接,并通知连接程序如何产生最终的可执行文件。 模块定义文件完成以下工作:1、定义应用程序名;2、标识应用程序为Windows应用程序;3、
2013-04-18 18:19:54 823
原创 Windows的对话框
Windows的对话框根据其与父窗口的关系,可分为模式对话框与无模式对话框两类。模式(modal)对话框:当该类对话框运行时,其父窗口无效,直到该对话框结束。无模式(modeless)对话框:该类对话框可与父窗口共同运行。 一个完整的对话框一般包含对话框面板与函数两部分:对话框模版:是在RC文件中定义的一个对话框,以各种方式决定对话框的大小、有哪些控件、各在什么位置等。对话
2013-04-18 18:08:47 1168
原创 消息映射
消息映射的本质其实是一个巨大的数据结构,用来为诸如WM_PAINT之类的标准信息决定流动路线,使其到达父类去。消息映射也用来为WM_COMMAND这个特殊的信息决定流动路线,使其能够到达类派生结构的分支去。消息映射是MFC内建的一个信息分派机制。利用消息映射宏及其固定形式的写法,一旦信息发生,就可以知道信息该向哪里传送。 消息映射表消息消息映射宏消息处理程序
2013-04-18 17:53:16 405
原创 句柄
句柄是用来标志被应用程序建立或使用的对象的唯一整数。Windows要使用各种各样的句柄来标志窗口、菜单、输出设备及文件等。句柄的功能与指针类似。用户必须通过某种方式来创建句柄,并要保证在使用完后销毁掉,以免造成资源浪费。Windows中有很多种句柄,如HWND(窗口句柄)、HDC(设备描述句柄)及HINSTANCE(实例句柄)等,这些句柄都可以用HANDLE(通用句柄)来表示。 句
2013-04-18 14:40:01 494
原创 动态链接技术
动态链接是相对于静态链接而言的,当多个应用程序一起运行,并且均调用了某函数的代码时,此时动态链接库允许这些应用程序共享该函数的代码,以达到节省内存的效果。动态链接发生在程序运行时,其是在应用程序调用Windows API函数运行时才链接上的。但在链接时,链接器要先为调用者准备一些适当的信息,才能够在运行时顺利转到DLL执行。在动态链接中,所要调用的函数代码并没有被复制到可执行文件中去,而是仅仅
2013-04-18 13:06:40 841
原创 消息处理流程
一般情况下,系统需要维护一个或多个消息队列,所有产生的消息都会被插入消息队列中。系统从队列中取出消息后,根据消息的参数而将该消息发送到指定程序的消息循环中,每一个运行的程序都拥有自己的消息循环。消息循环简而言之就是一个循环体。在这个循环体中使用GetMessage()函数不停地从消息队列中获取信息,然后利用DisPatchMessage()函数将消息发送到指定窗口,也就是调用指定窗口的窗口过程,并
2013-04-18 11:13:31 682
原创 MessageBox()API函数
原型:int MessageBox ( HWND hwnd, LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK)参数:第一个参数指明此消息框的父窗口句柄,为NULL则说明没有父窗口。 第二、三个参数类型君威字符串指针,分别指向消息框中要显示的字符串和消息框标题栏显示的字符串。 第四个参数是一个无
2013-04-18 10:42:48 807
原创 windows.h头文件
windows.h,是Windows程序最基本的头文件,它包含在SDK中。该头文件定义了Windows的所有函数原型、消息、多种数据类型、数据结构及符号常量等。windows.h必须包含于每个Widnows应用程序中。
2013-04-18 10:19:25 2763
原创 Windows消息
Windows可以发送给窗口的消息大约有140调,它们都以WM打头的名字标识,且都在“windows.h”头文件中定义。 不论哪种窗口消息,都必须被处理,因此switch中的default必须调用Windows内部预设的信息处理函数DefWindowProc()。
2013-04-18 10:14:48 356
原创 Win32程序开发流程
Windows程序分为源程序和资源两部分。源程序经由C/C++编译器生成.obj文件。资源部分经由RC编译器,读取RC文件的描述后,将所有资源文件集中制作出一个.res文件。.res文件与.obj文件结合在一起,集成为一个完整的.exe可执行文件,该文件才是一个完整的Windows应用程序。其开发与执行流程如下图:
2013-04-18 09:59:44 562
原创 Windows常用变量前缀表
前缀数据类型bBOOLbyBYTE(无符号字符)c或chchar/WCHAR/TCHARclrCOLORREF,24位颜色值cx、cy水平或垂直距离C类dwDWORDfnfunction(函数)hhandle(句柄)Iint
2013-04-18 09:43:15 976
原创 应用程序退出时的消息过程
当用户单击应用程序的“文件|退出”菜单时,Windows会产生一系列消息,如键盘或鼠标消息、WM_SYSCOMMAND消息和WM_CLOSE消息。WM_CLOSE是一条进队消息,被放入应用程序消息队列中。GetMessage()函数从消息队列中取得WM_CLOSE消息,由DispatchMessage()函数派送给窗口函数。若窗口函数没有对WM_CLOSE消息处理的代码,就转由默认窗口函数调用De
2013-04-17 19:22:09 552
原创 获取设备描述表句柄示例
case WM_PAINT: // 重画窗口客户区消息 HDC hdc; // 定义设备描述表句柄 PAINTSTRUCT ps; // 定义绘图信息结构变量 hdc = BeginPaint(hwnd, &ps); // 获取需重画窗口的设备描述表句柄 /* * 参数一:设备描述表句柄 * 参数二、三:指定输出位置坐标 * 参数四:要输出的字符串
2013-04-17 18:15:05 669
原创 设备描述表(DC)
设备描述表(DC)也成为设备上下文,是GDI内部定义的有图形对象、图形方式及其属性的数据结构。其与特定设备相关,描述了硬件设备的具体特征信息。应用程序不能直接访问设备描述表。为了进行图形输出,应用程序必须先获取设备描述表句柄,然后以设备描述表句柄为参数调用GDI函数,最终实现图形功能。
2013-04-17 18:00:37 515
原创 图形设备接口(GDI)
Windows的图形设备接口(GDI)是一组API函数。他提供与设备无关的图形功能,是应用程序在不同图形设备上进行相同的操作时,无需考虑设备的硬件差异,即设备的无关性。设备无关性是通过设备描述表实现的。
2013-04-17 17:57:22 475
原创 进队消息与不进队消息
有些用户操作可能即产生进队消息,又产生不进队消息。并且有些不进队消息来自进队消息 。例如,退出应用程序时会产生一条进队消息WM_CLOSE,消息循环将其发送到窗口函数,处理该消息一般是调用DestroyWindow()来撤销并关闭窗口,并发送不进队消息WM_DESTROY到窗口函数。 消息是否进入队列由Windows自行操作,程序设计人员只需着力编写窗口函数即可。
2013-04-17 12:13:13 579
原创 SendMessage()API函数
原型:LRESULT WINAPI SendMessage( HWND hWnd, UINT Msg, WPARAM WParam, LPARAM lParam); 程序可以通过调用SendMessage()函数直接发送消息给指定窗口。
2013-04-17 12:07:53 772
原创 PostMessage()API函数
原型:BOOL WINAPI PostMessage ( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );参数:Msg参数指定了要发送的消息值。 调用API函数PostMessage()可以派送(post)一条消息到指定窗口的消息队列。
2013-04-17 12:04:53 769
原创 WndProc()函数
原型:LRESULT CALLBACK WndProc (HWND hwnd, UNIT message, WPARAM wParam, LPARAM lParam);参数:第一个参数表示当前窗口的句柄 第二个参数是需要处理的消息值 第三、四个参数包含了相应消息的信息,例如消息发生时鼠标位置等。 应用程序创建的每个窗口或对话框都对应一
2013-04-17 11:53:21 2029
原创 DispatchMessage()函数
函数DispatchMessage()负责将消息派送到相应的窗口函数。它根据msg结构中的hWnd窗口句柄成员找到相应的窗口类 ,然后根据注册窗口时wndclass类结构找到相应的窗口函数WndPorc()。由消息传递函数将消息传递给窗口函数WndPorc()进行消息处理。
2013-04-17 11:46:22 2277
原创 TranslateMessage()函数
函数TranslateMessage()负责键盘消息转换。击键消息除字符消息外,其它击键操作产生的虚拟键消息,包括WM_KEYDOWN、WM_SYSKEYDOWN、WM_KEYUP和WM_SYSKEYUP。这些虚拟键消息必须转换成字符键消息程序才能响应。
2013-04-17 11:42:11 813
原创 GetMessage()函数
原型:BOOL WINAPI GetMessage(LPMSG, HWND, UINT, UINT) 参数:第一个参数为存放消息的MSG结构指针; 第二个参数表示接收消息的窗口句柄; 第三、第四个参数分别标识要获取的最大和最小消息值。 当后三个参数值设为NULL或0时,标识应用程序接收它所创建的所有窗口的所有消息。
2013-04-16 20:32:05 2300 1
原创 WinMain()函数
原型:int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)参数:第一个参数hInstance是唯一标识本程序的实例句柄,系统和其他应用程序通过该句柄与本程序通信。 第二个参数hPrevInstance是本程序的前一个实例句柄,由于3
2013-04-16 20:31:40 1223
原创 Windows应用程序的基本要素
Windows应用程序有相对固定的程序结构,其基本要素一般包含一个入口函数WinMain()和至少一个窗口处理函数WndProc()。入口函数WinMain()首先进行初始化工作,注册窗口类、创建窗口,然后进行消息循环。窗口处理函数使用switch语句,针对不同消息进行相应的处理。
2013-04-16 20:31:10 536
原创 Windows程序的生命周期
实例参见《典型的Windows应用程序代码》一文! (1)程序初始化过程中首先调用函数CreateWindow(),为程序建立一个窗口。CreatWindow产生窗口后会发送WM_CREATE直接给窗口函数,于是后者可以在此时做些初始化操作(例如打开文件、读初始数据等)。(2)程序存活期间,函数GetMessage()不断从消息队列中检索消息。如果这个消息是WM_QUIT,
2013-04-16 20:30:44 823
原创 典型的Windows应用程序代码
#includeLRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ WNDCLASS wndclass; // 定义窗口类结构变量 HW
2013-04-16 20:29:05 881
原创 Windows对象
Windows对象是Windows操作系统的一个内部数据结构的实例。其由一个Windows系统全局的窗口句柄来唯一标志,由API函数CreateWindow()创建,而由DestroyWindow()撤销。在MFC编程中,通常在MFC对象建立以后,调用Create()成员函数建立Windows对象,并链接在MFC对象上。
2013-04-16 20:27:40 432
原创 MFC
MFC(Microsoft Foundation Class Library)是Visual C++的微软基础类库,包含了所有与系统相关的类(包括图形界面相关的类),封装了大部分API函数,并提供了一个应用程序框架和开发应用程序的工具,如应用程序向导、类向导及可视化资源设计等高效工具,使Windows程序设计标准化。因此,MFC Windows编程又被成为标准Windows程序设计。
2013-04-16 20:26:02 429
原创 Windows应用程序的消息驱动式结构
整个Windows应用程序由消息循环与窗口过程函数构成,形成了消息驱动式结构。 下图为Windows编程模型:
2013-04-16 20:25:23 535
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人