C++ windows编程学习笔记(二)——从头开始

本文介绍了一个简单的Windows程序示例,通过实现一个显示消息对话框的应用,介绍了基本的Windows编程概念和必要的库链接方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

之前有过一个程序结构的解析,觉得有很多东西还是从基础开始比较好,这个就像初学C时的的那个HelloWorld!程序一样,就是Windows编程最简单的程序了。或许这就是可视化编程的第一步了。。。以后会陆续更新的。。。时间不会短。。。 

#include<Windows.h>
//头文件。。。这个不用说了吧。。。
#pragma comment(lib,"User32.lib")
//让User32.lib中的东西在这个程序中可以被使用。
//与在链接器,输入中加入User32.lib是一样的。
//不过这样使该程序可移植性提高了,因为使用者不需要再在User32.lib中添加。
/*那就顺便学习一下#pragma comment吧
#pragma comment( comment-type ,["commentstring"] ) 
comment-type,是一种变量类型,指定注释的类型。
所以从定义中我们就可以知道comment就是注释的意思
	compiler,编译器,放置编译器版本或者名字到一个对象文件,也就相当于
		一个注释,就像"/ * * /"
	lib解释过了。。。
	linker,与lib同理,看那格式应该是对linker的模式进行设置吧。。。
		下面把一些东西复制过来吧。。。

		指定一个连接选项,这样就不用在命令行输入或者在开发环境中设置了。
		只有下面的linker选项能被传给Linker.
			/DEFAULTLIB ,/EXPORT,/INCLUDE,/MANIFESTDEPENDENCY, /MERGE,/SECTION
				(1) /DEFAULTLIB:library
				  /DEFAULTLIB 选项将一个 library 添加到 LINK 在解析引用时搜索的库列表。
				    用 /DEFAULTLIB指定的库在命令行上指定的库之后和 .obj 文件中指定的默认库之前被搜索。
					忽略所有默认库 (/NODEFAULTLIB) 选项重写 /DEFAULTLIB:library。
					如果在两者中指定了相同的 library 名称,忽略库 (/NODEFAULTLIB:library) 选项将重写
					/DEFAULTLIB:library。
				(2)/EXPORT:entryname[,@ordinal[,NONAME]][,DATA]
				    使用该选项,可以从程序导出函数,以便其他程序可以调用该函数。
					也可以导出数据。通常在 DLL 中定义导出。entryname 是调用程序要使用
					的函数或数据项的名称。ordinal 在导出表中指定范围在 1 至 65,535 的索引;
					如果没有指定 ordinal,则 LINK 将分配一个。NONAME 关键字只将函数导出为序号,没有 entryname。
					DATA关键字指定导出项为数据项。客户程序中的数据项必须用 extern __declspec(dllimport) 来声明。
					有三种导出定义的方法,按照建议的使用顺序依次为:
						源代码中的 __declspec(dllexport).def 文件中的 EXPORTS 语句LINK 命令中的 /EXPORT 规范所
						有这三种方法可以用在同一个程序中。LINK 在生成包含导出的程序时还创建导入库,除非生成中
						使用了 .exp 文件。   
						LINK 使用标识符的修饰形式。编译器在创建 .obj 文件时修饰标识符。如果 entryname 以其未修
						饰的形式指定给链接器(与其在源代码中一样),则 LINK 将试图匹配该名称。如果无法找到唯一
						的匹配名称,则 LINK 发出错误信息。当需要将标识符指定给链接器时,请使用 Dumpbin 工具获
						取该标识符的修饰名形式。   
				(3)/INCLUDE:symbol
				    /INCLUDE 选项通知链接器将指定的符号添加到符号表。若要指定多个符号,请在符号名称之间键入逗
					号 (,)、分号 (;) 或空格。在命令行上,对每个符号指定一次 /INCLUDE:symbol。
					链接器通过将包含符号定义的对象添加到程序来解析 symbol。该功能对于添包含不会链接到程序的库
					对象非常有用。用该选项指定符号将通过 /OPT:REF 重写该符号的移除。
					我们经常用到的是#pragma comment(lib,"*.lib")这类的。#pragma comment(lib,"Ws2_32.lib")表
					示链接Ws2_32.lib这个库。 和在工程设置里写上链入Ws2_32.lib的效果一样,不过这种方法写的 程序
					别人在使用你的代码的时候就不用再设置工程settings了
*/
int WinMain(HINSTANCE hInstance,
			HINSTANCE hprevInstance,
			LPSTR lpCmdLine,
			int nCmdSow)
{
	MessageBox(NULL,								//隶属于哪个
			   TEXT("开始学习Windows编程!"),		//文本内容
			   TEXT("消息对话框"),					//窗口标题
			   MB_OK);								//窗口类型只有一个OK按钮。。。
}


 

运行的结果就是:

很简单,所以在看懂了这个程序之后,我对Windows编程的惧怕心理也都没有了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值