windows程序设计学习笔记(第一章)

来源:互联网 发布:用户数据安全保护 编辑:程序博客网 时间:2024/05/22 10:36

#include <windows.h>


int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevlnstance,
                   PSTR szCmdLine,int iCmdShow)

    MessageBox(NULL,TEXT("Hello,Windows 98!"),TEXT("HelloMsg"),0);

    return 0;
}

 

一. 头文件

几乎每一个使用C/C++编写的Windows程序在开头都会使用include引入"windows.h"头文件,WINDOWS.H是主要的含入文件,
它包含了其它Windows表头文件,这些表头文件的某些也包含了其它表头文件.这些表头文件中最重要的和最基本的是:

WINDEF.H 基本型态定义。
WINNT.H 支持Unicode的型态定义。
WINBASE.H Kernel函数。
WINUSER.H 使用者接口函数。
WINGDI.H 图形设备接口函数。
  
这些表头文件定义了Windows的所有数据型态、函数呼叫、数据结构和常数标识符,它们是Windows文件中的一个重要部分.

 

二.函数入口

一个C/C++程序都有一个程序入口(main函数),Windows程序的也有进入点:WinMain

  1. int WINAPI WinMain ( HINSTANCE hInstance,HINSTANCE hPrevInstance,  
  2.             PSTR szCmdLine,int iCmdShow)  

 

  hInstance:

           为应用程序的实例句柄,唯一标示一个应用程序,比如说:有一个qq.c的文件,编译后变成了qq.exe。qq.exe.就是一个应用程序,而用hInstance唯一标识这个应用程序

   hPrevInstance:

            当有多个应用程序时,比如点击运行两次(f5),产生两个应用程序,则hPrevInstance表示先出现那

            个应用程序的句柄,在32位系统下,永远为0

        szCmdLine:

                                命令行参数

 

       iCmdShow:窗口显示方式,可以是正常的或者是最大化地充满整个画面,或者是最小化显示在工作列中.

 

 

  三.WINAPI解析

           #define WINAPI   __stdcall

    该语句指定了一个调用约定,包括如何生成机器代码以在堆栈中放置函数调用的参数,许多windows函数调用声明为WINAPI

 

          注意:#define CALLBACK  __stdcall

               CALLBACK也定义成__stdcall,但CALLBACK常用于回调函数,比如说窗口过程

 

例如:

     LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lParam)

      {

                           ........................

                          ..........................

                    }

 

具体用WINAPI还是CALLBACK更加具体情况,方便记忆原则,比如说callback,看名次就知道是回调函数,使用WINAPI就没那么明显了