一、创世纪
梦中惊醒后,我们来编写Windows程序。
严格地说,运行在Windows上的控制台程序,也叫Windows程序,不过,那种程序不具有Windows的特点——窗口。所以,我们始终用“Windows程序”来指代那些运行在Windows上的且有窗口的应用程序。
最简单的Windows程序非消息框莫属,从消息框开始应该是编写Windows应用程序最好的开端了。
运行VS,单击菜单上的“文件”,选择“新建”,选择“项目”,选择“Win32项目”,名称随便,叫“Lesson001”好了,单击“下一步”,复选“空项目”,单击“完成”。
在左边的“解决方案管理器”中,右键单击“源文件”,选择“添加”,选择“新建项”,文件名随意,不妨“main.cpp”。
二、编写代码
在文件main.cpp中键入如下内容:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
int __stdcall wWinMain(HINSTANCE, HINSTANCE, wchar_t*, int)
{
MessageBox(nullptr, L"内容", L"标题", MB_OK);
return 0;
}
在菜单上选择“生成”,“生成解决方案”,就可以编译程序了。
然后在菜单上选择“调试”,“开始执行(不调试)”,就可以看到一个消息框弹了出来。
三、代码构成
在上面的代码中,<windows.h>是编写Windows程序所需要的头文件,WIN32_LEAN_AND_MEAN是为了排除windows.h中一些不常用的东西。wWinMain是程序的入口点,就如同main是控制台程序的入口点一样,它有4个参数(这个程序中没有用到)。
接下来的MessageBox函数是这个简短的程序中最核心的部分。
MessageBox(hWnd, pText, pCaption, Type);
hWnd表示这个消息框的父窗口,如果没有父窗口,则设为nullptr。在我们的程序中,消息框没有父窗口(或者说,以桌面为父窗口),所以传入nullptr。pText、pCaption分别是消息框的内容和标题,如图所示:
Type表示这个消息框的按钮状况以及图标状况。例如,MB_OK表示有一个“确定按钮”;MB_YESNO表示有“是”和“否”两个按钮。除了指定按钮,这个值还可以指定图标。
MessageBox的返回值,表示哪个按钮被点击了。
MessageBox函数的详细用法,见MSDN: