01. 第一个Windows程序设计

来源:互联网 发布:第二代身份证照片软件 编辑:程序博客网 时间:2024/05/02 05:26
Microsoft Visual Studio 2008 速成版 SP1 ISO离线版 http://download.microsoft.com/download/3/0/2/3025eae6-2e15-4972-972a-f5b1ed248e85/VS2008ExpressWithSP1CHSX1504735.iso
#include <windows.h>int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, PSTR szCmdLine,int iCmdShow){MessageBox(NULL, TEXT("hello,Windows 程序设计"),TEXT("HelloMsg - 这是标题"),MB_OK|MB_ICONINFORMATION);return 0;}

说明

WINDOWS.H是主要的头文件,它包含了其他Windows头文件,这些头文件的某些也包含了其他头文件。这些头文件中最重要的和最基本的是:  WINDEF.H 基本型态定义。
  WINNT.H 支援Unicode的型态定义。
  WINBASE.H Kernel函数。
  WINUSER.H 使用者界面函数。
  WINGDI.H 图形装置界面函数。
  这些头文件定义了Windows的所有资料型态、函数调用、资料结构和常数识别字,它们是Windows文件中的一个重要部分。
  文件路径:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include。

WINAPI见windef.h这个头文件
  #define WINAPI __stdcall
  默认情况下,我们的函数调用都是遵循__stdcall这个规则的。当然,也有诸如__cdecl、__pascal等规则。
  使用__stdcall还是__cdecl或__pascal,在纯Windows编程下并非特别需要。
  __stdcall:
  1、进行函数调用,函数参数的入栈方式是最右边先入栈。
  2、同时__stdcall规定,子函数负责栈的回收(调用者只负责压栈). 题外话:__pascal的调用规则是从左到右,正好与__stdcall相反。
  3、C调用约定(即用__cdecl关键字说明)(The C default calling convention)按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于传送参数的内存栈是由调用者来维护的(正因为如此,实现可变参数vararg的函数(如printf)只能使用该调用约定)当然,这些工作是应用程序自己完成的,不需要编写者动手。汇编语言另当别论(POP SP POP BP等) 。另外,在函数名修饰约定方面也有所不同。 _cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。函数采用从右到左的压栈方式。VC将函数编译后会在函数名前面加上下划线前缀。


WinMain是一个函数,该函数的功能是被系统调用,作为一个32位应用程序的入口点。WinMain函数应初始化应用程序,显示主窗口,进入一个消息接收一发送循环,这个循环是应用程序执行的其余部分的顶级控制结构

HINSTANCE hInstance 实例句柄,句柄无非是一个数值,程序用来标识某些东西的。

HINSTANCE hPrevInstance 一个程序可以通过查看 hPrevInstance 参数从而知道是否有其它实例正在运行。

 PSTR szCmdLine 用来运行程序的命令行

int iCmdShow 指明程序最初如何显示:或正常显示,或最大化到全屏,或最小化显示在任务栏上。