Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1804372
  • 博文数量: 290
  • 博客积分: 10653
  • 博客等级: 上将
  • 技术积分: 3178
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-24 23:08
文章存档

2013年(6)

2012年(15)

2011年(25)

2010年(86)

2009年(52)

2008年(66)

2007年(40)

分类: C/C++

2008-10-14 21:31:34

第一个windows程序分析: 
程序功能: 程序执行后弹出一对话框,并在对话框内显示:hellowindows!字符串;
#include 
 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     MessageBox (NULL, TEXT ("Hello, Windows!"), TEXT ("HelloMsg"), 0)   return 0 ;
}
window.h头文件,包含了大多数你调用API函数需要时的声明文件,如数据结构,常量,函数调用等;C++规定: 在函数调用前,必须先声明后使用,或者是定义在前,使用在后;
除windows.h头文件外,还有几个常用的头文件需要说明下: 

  • WINDEF.H   Basic type definitions. 基本类型定义

  • WINNT.H   Type definitions for Unicode support. Unicode类型支持定义

  • WINBASE.H   Kernel functions. 内核函数

  • WINUSER.H  User interface functions. 用户界面函数

  • WINGDI.H  Graphics device interface functions. 图形设备接口函数

函数入口:

我们知道,C/C++语言中,入口的函数是main(),也就是程序执行时,从main()函数内的第一条语句执行,类似的,在Visual C++中,入口函数是WinMain(),它在WinBase.h文件中被声明;原型如下:

int
WINAPI
WinMain(
    HINSTANCE hInstance,  应用程序实例句柄
   HINSTANCE hPrevInstance,  一般为0,16位机的产物
LPSTR lpCmdLine,   命令行参数,程序可以用它在执行时加载一些文件到内存中
   int nShowCmd    程序最初的现实方式,如: 最大化,最小化,等;
  );
LPSTR  ,和PStr 是指向字符串的指针,你看在WinNT.h这个头文件看到它们的原型;LP表示 long pointer ,是16位机的产物;

#define WINAPI __stdcall  定义了函数的参数入栈的顺序以及堆栈平衡的规则;也几是指出在堆栈中是如何放置调用函数参数的机器码,C语言参数的入栈顺序是从右到左,而负责堆栈平衡的是调用者,而_stdcall 的参数入栈顺序遵循C的规定,参数平衡是子程序;它是C和Pascal的混合;

接下来是MessageBox函数,它用来显示一些简短的消息;而这个函数的使用方法你可以参考:Platform SDK/User Interface Services/Windowing/Dialog Boxes/Dialog Box Reference/Dialog Box Functions.

 

 

 
阅读(868) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~