-
-
[原创]不包含windows.h和window.h内的任何头文件,弹框 “Hello, world!”
-
发表于:
2020-10-22 15:11
8097
-
[原创]不包含windows.h和window.h内的任何头文件,弹框 “Hello, world!”
在windows应用程序下,不包含windows.h和window.h内的任何头文件,弹框 “Hello, world!”,本文主要基于 vs2015 生成的windows应用程序的空工程进行研究,以提高对基础知识的理解。
一、VS基础配置
1.打开VS2015,新建项目----win32控制台应用程序----windows应用程序,附加选项,空项目
二、windows应用程序的主入口函数wWinMain
写任何一个函数应该有一个该函数的入口了。我们知道控制台的入口函数是main()函数,那么在写Windows应用程序也是main()吗?回答当然不是了。我们用的是SDK中的WinMain()函数,参考MSDN的说明:
MSDN上已经说明需要包含 Winbase.h或者Windows.h. 那我们需要的挑战就是不使用任何头文件,也能正常弹出提示框MessageBox。
三、具体流程
1、先写主函数内的内容
2、如果直接选择编译以上问题,相信大家看VS提示输出窗口是一大堆,莫名其妙的错误提示
这么多语法错误、未声明的标识符 为啥???
现在我会一点一点的挽回那失去的耐心!优先解决掉未声明的标识符
3、提示“_In_”: 未声明的标识符的问题
_in 输入参数
_out 输出参数
_opt 参数是可选的,就是可以为NULL
这些宏都被定义为空,只是让程序更容易理解!
解决方法:宏定义
#define _In_
#define _In_opt_
4、C语言语法基础知识:在使用函数之前应该先声明,那么WinMain函数,同样也需要声明,OK,加上
代码:
5、继续F7编译,还是提示很多报错,不要放弃,继续解决错误
可以新的提示“HINSTANCE”: 未声明的标识符,依次解决掉WinMain函数的所有类型
解决方法:
HINSTANCE是“句柄型”数据类型
HWND 是一个基本类型,一般指窗口句柄
LPSTR一种字符串数据类型
LPCSTR一种常量字符串数据类型
LPWSTR是wchar_t字符串数据类型
LPCWSTR 是常量wchar_t字符串数据类型
UINT是无符号整型数据类型
依次自定义类型
typedef void *HINSTANCE;
typedef void *HWND;
typedef char *LPSTR;
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!