(全)windows+sdk编程系列文章

(全)windows+sdk编程系列文章

ID:22004247

大小:2.20 MB

页数:301页

时间:2018-10-26

(全)windows+sdk编程系列文章_第1页
(全)windows+sdk编程系列文章_第2页
(全)windows+sdk编程系列文章_第3页
(全)windows+sdk编程系列文章_第4页
(全)windows+sdk编程系列文章_第5页
资源描述:

《(全)windows+sdk编程系列文章》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、windowssdk编程系列文章----消息框在本课中,我们将用C语言写一个Windows程序,程序运行时将弹出一个消息框并显示"helloworld"。理论:Windows为编写应用程序提供了大量的资源。其中最重要的是WindowsAPI(ApplicationProgrammingInterface)。WindowsAPI是一大组功能强大的函数,它们本身驻扎在Windows中供人们随时调用。这些函数的大部分被包含在几个动态链接库(DLL)中,譬如:kernel32.dll、user32.dll和gdi32.dll。Kernel32.dll中的函数主要处理内存管理和进程调度;user

2、32.dll中的函数主要控制用户界面;gdi32.dll中的函数则负责图形方面的操作。除了上面主要的三个动态链接库,您还可以调用包含在其他动态链接库中的函数,当然您必须要有关于这些函数的足够的资料。动态链接库,顾名思义,这些API的代码本身并不包含在Windows可执行文件中,而是当要使用时才被加载。为了让应用程序在运行时能找到这些函数,就必须事先把有关的重定位信息嵌入到应用程序的可执行文件中。这些信息存在于引入库中,由链接器把相关信息从引入库中找出插入到可执行文件中。您必须指定正确的引入库,因为只有正确的引入库才会有正确的重定位信息。当应用程序被加载时Windows会检查这些信息,这

3、些信息包括动态链接库的名字和其中被调用的函数的名字。若检查到这样的信息,Windows就会加载相应的动态链接库,并且重定位调用的函数语句的入口地址,以便在调用函数时控制权能转移到函数内部。如果从和字符集的相关性来分,API共有两类:一类是处理ANSI字符集的,另一类是处理UNICODE字符集的。前一类函数名字的尾部带一个"A"字符,处理UNICODE的则带一个"W"字符(我想"W"也许是代表宽字符的意思吧)。我们比较熟悉的ANSI字符串是以NULL结尾的一串字符数组,每一个ANSI字符是一个BYTE宽。对于欧洲语言体系,ANSI字符集已足够了,但对于有成千上万个唯一字符的几种东方语言体

4、系来说就只有用UNICODE字符集了。每一个UNICODE字符占有两个BYTE宽,这样一来就可以在一个字符串中使用65336个不同字符了。几乎每一个API都有处理这两种字符集的形式,例如:MessageBoxA和MessageBoxW,其中MessageBoxA是适用于处理ANSI字符集的API。MessageBoxW是适用于UNICODE字符集的API。在c中为了调用方便,对这两个API进行了宏定义。统一使用MessageBox。编译的时候会根据编译设置决定是使用MessageBoxA还是使用MessageBoxW。下面摘自WINUSER.H中关于MessageBox的定义。WINU

5、SERAPIintWINAPIMessageBoxA(   HWNDhWnd,   LPCSTRlpText,   LPCSTRlpCaption,   UINTuType);WINUSERAPIintWINAPIMessageBoxW(   HWNDhWnd,   LPCWSTRlpText,   LPCWSTRlpCaption,   UINTuType);#ifdefUNICODE#defineMessageBoxMessageBoxW#else#defineMessageBoxMessageBoxA#endif其中WINUSERAPI是一个宏,该宏定义了其修饰的函数是从其他库中

6、导入的,还是自身定义的。#if!defined(_USER32_)#defineWINUSERAPIDECLSPEC_IMPORT#else#defineWINUSERAPI#endif为了两种字符集都可以支持,在处理字符时,我们使用_T("")宏。该宏会根据你的设置,将你的字符串转变为相应的字符集。例子:(见光盘Helloword)#include"windows.h"#include"tchar.h"int_stdcallWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnShowCmd){   

7、MessageBox(NULL,_T("helloworld"),_T("MyFirstWindowsProgram"),MB_OK);   return1;}分析:当我们在工程中Settings里面设置如下图所示的UNICODE,_UNICODE时,代码中的_T("helloworld")和_T("MyFirstWindowsProgram")编译时都转化为unicode字符。MessageBox也会使用MessageBoxW函数。如果按照下

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。