Microsoft Windows应用程序通常被编写为控制台应用程序或窗口应用程序(还有其他类型,例如服务和插件)。程序员的区别在于程序员提供的应用程序源的主要入口点的接口方面的差异。
当C或C ++应用程序启动时,可执行装入程序使用的可执行入口点是编译器提供的运行时。可执行文件加载器读取可执行文件,对所需的映像进行任何修复,然后调用可执行文件入口点,对于C或C ++程序,该入口点是编译器提供的运行时。
加载程序调用的可执行文件入口点不是应用程序程序员提供的主要入口点,而是由编译器和创建可执行文件的链接器提供的运行时。运行时为应用程序设置环境,然后调用程序员提供的主入口点。
Windows控制台应用程序对于程序员提供的主要入口点可能具有几个略有不同的界面。两者之间的区别在于,主要的入口点是传统入口点int main (int argc, char *argv[])还是Windows特定版本,int _tmain(int argc, _TCHAR* argv[])该入口点在应用程序参数中提供了宽字符。如果使用Visual Studio生成Windows Win32控制台应用程序项目,则生成的源将是Windows特定的版本。
Windows窗口(GUI)应用程序为程序员提供的主要入口点具有不同的接口。程序员提供的这个主要入口点具有更复杂的界面,因为运行时设置了GUI环境,并提供了附加信息以及应用程序参数。
本示例说明Windows窗口(GUI)主入口点界面。要探索此主题,您应该具有:
具有编译器的IDE(最好是Visual Studio)
C知识
使用IDE创建一个空的Win32 Windows(GUI,而不是控制台)项目。必须为窗口应用程序(而非控制台应用程序)设置项目设置,以使链接器链接到正确的运行系统。创建一个main.c文件,将其添加到项目中,然后键入以下代码:
#include <windows.h> int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow) { return MessageBox(NULL, "hello, world", "caption", 0); }
这是我们的Win32“ Hello,world”程序。第一步是包括Windows头文件。所有Windows的主要标头是windows.h,但还有其他标头。
的WinMain是从一个标准的不同与控制台应用程序中使用。接口中使用了更多参数,更重要的是,窗口应用程序的主入口点使用的调用约定与标准C / C ++不同。int main()
限定符APIENTRY表示调用约定,这是将参数压入堆栈†的顺序。默认情况下,调用约定是指示的标准C约定__cdecl。但是,Microsoft对Windows API函数使用了另一种类型的调用约定,即PASCAL约定,由__stdcall限定符指示。APIENTRY是__stdcall其中包含的头文件之一中的已定义名称windows.h(另请参见__stdcall是什么?)。
接下来的参数WinMain如下:
hInst:实例句柄
hInstPrev:上一个实例句柄。不再使用。
cmdline:命令行参数(请参阅将WinMain(或wWinMain)参数传递给普通main)
cmdshow:指示是否应显示一个窗口。
我们还没有使用任何这些参数。
在内WinMain(),是对的调用MessageBox(),该调用显示带有消息(消息框)的简单对话框。第一个参数是所有者窗口的句柄。由于我们还没有自己的窗口,请通过NULL。第二个参数是正文。第三个参数是标题,第四个参数包含标志。传递0时,将显示默认消息框。下图剖析了消息框对话框。
好的链接:
winprog.org上的教程
MessageBox MSDN上的功能文档
†仅在32位系统上。其他体系结构具有不同的调用约定。
本文向大家介绍TypeScript 你好,世界,包括了TypeScript 你好,世界的使用技巧和注意事项,需要的朋友参考一下 示例 这里我们有一个类 Greeter,它有一个构造函数和一个 greet 方法。我们可以使用 new 关键字构造一个类的实例,然后传入一个字符串,我们希望 greet 方法输出到控制台。Greeter 类的实例存储在 Greeter 变量中,然后我们调用 greet 方
本文向大家介绍qml 你好,世界,包括了qml 你好,世界的使用技巧和注意事项,需要的朋友参考一下 示例 一个简单的应用程序在窗口中心显示文本“ Hello World”。
本文向大家介绍xaml 你好,世界,包括了xaml 你好,世界的使用技巧和注意事项,需要的朋友参考一下 示例 这是WPF中XAML页面的简单示例。它由XAML中最常见的元素a Grid,aTextBlock和aButton组成。 语法 描述 <Window> 根容器,用于承载可视化数据并使用户能够与之交互的内容。WPF窗口是XAML(.xaml)文件(其中元素为根)和CodeBehind(.cs)
本文向大家介绍processing 你好,世界,包括了processing 你好,世界的使用技巧和注意事项,需要的朋友参考一下 示例 编写处理代码的最简单方法是简单地调用一系列函数。在处理编辑器中按运行按钮,处理将运行您的代码。这是一个例子: 此代码创建一个200x200窗口,绘制一个蓝色背景,将填充颜色更改为绿色,然后在屏幕中间绘制一个圆圈。 但是,大多数处理草图将使用预定义的setup()和d
本文向大家介绍F# 你好,世界!,包括了F# 你好,世界!的使用技巧和注意事项,需要的朋友参考一下 示例 这是一个简单的控制台项目的代码,该项目显示“ Hello,World!”。到STDOUT,然后退出代码为0 逐行细分示例: [<EntryPoint>] -.net属性,用于标记程序(源)的“用于设置入口点的方法”。 let main argv-这定义了main一个由单个参数调用的函数argv
本文向大家介绍sapui5 你好,世界!,包括了sapui5 你好,世界!的使用技巧和注意事项,需要的朋友参考一下 示例 我们首先为应用创建HTML页面。在那里,我们定义了元标记,用于加载SAPUI5库的脚本标记以及用于应用程序内容的占位符。 根据您的安装调整资源所在的路径(<>:<>)。对于OpenUI5,您可以使用src =“ https://openui5.hana.ondemand.com
本文向大家介绍polymer 你好,世界,包括了polymer 你好,世界的使用技巧和注意事项,需要的朋友参考一下 示例 本示例创建一个名为的Polymer元素x-foo,其元素绑定到名为“ message”的字符串属性。元素的HTML导入到主文档中,从而允许使用中的<x-foo>标记<body>。 x-foo.html index.html 参见CodePen中的演示
本文向大家介绍MATLAB你好,世界,包括了MATLAB你好,世界的使用技巧和注意事项,需要的朋友参考一下 示例 在MATLAB编辑器中打开一个新的空白文档(在最新版本的MATLAB中,通过选择工具栏的“主页”选项卡,然后单击“新建脚本”来执行此操作)。创建新脚本的默认键盘快捷键是Ctrl-n。 或者,键入edit myscriptname.m将打开文件myscriptname.m进行编辑,或者如