程序清单1.1 一个简化的 C++ Windows 程序
// Program LaoTzu.cpp #include<windows.h>
// Some programs to surpress unneeded warnings #pragma warning (disable:4068) #pragma argsused
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInstance, LPSTR lpszCmdParam,int nCmdShow) { MessageBox(0,"He who is ruled by mem lives in sorrow.", "He who rules mem lives in confusion.", MB_OK|MB_ICONINFORMATION); return 0; }
语法
MessageBox 函数
int MessageBox(HWND,LPCSTR,LPCSTR,UINT);
MessageBox 函数用来创建一个窗口,它有四个参数:
第一个参数 HWND 是程序主窗口句柄。在程序清单 1.1 中,这个参数设置为0,因为 LaoTzu 程序没有主窗口.
第二个参数 LPCSTR 是一个指向字符串常量的长指针,该字符串是你希望显示在消息框中的正文,是消息框的主要部分。
第三个参数 LPCSTR 也是一个指向字符串常量的远指针,该字符串作为消息框的标题。
第四个参数 UINT 包括一个或多个下列标志:
// Buttons // ----------------------- #define MB_OK 0x0000 包括 okay 按钮 #define MB_OKCANCEL 0x0001 包括 okay cancel 按钮 #define MB_ABORTRETRYIGNORE 0x0002 Abort,Retry,Ignore #define MB_YESNOCANCEL 0x0003 Yes No Cancel 按钮 #define MB_YESNO 0x0004 Yes No 按钮 #define MB_RETRYCANCEL 0x0005 Retry,Cancel 按钮
// Icons #define MB_ICONHAND 0x0010 STOP图标 #define MB_ICONQUESTION 0x0020 问题标志图标 #define MB_ICONEXCLAMATION 0x0030 惊叹号标志图标 #define MB_ICONASTERISK 0x0040 星号图标 #define MB_ICONINFORMATION MB_ICONASTERISK #define MB_ICONSTOP MB_ICONHAND
// Scope and focus issues #define MB_APPLMODAL 0x0000 #define MB_SYSTEMODAL 0x0001 #define MB_TASKMODAL 0x0002
// Default button specification MB_DEFBUTTON1 MB_DEFBUTTON2 MB_DEFBUTTON3
// WIN32 MB_SETFOREGROUND MB_DEFAULT_DESKTOP_ONLY
MessageBox 函数返回一个整数值用来指示当 MessageBox 出现在屏幕上时用户选择了哪个按钮。例如,如果用户按下OK 钮,函数将返回 IDOK。如果用户按下 CANCEL 钮,函数将返回 IDCANCEL。下面列出函数的可能返回值:
IDABORT: 用户选择 Abort 按钮; IDCANCEL: 用户选择 Cancel 按钮; IDIGNORE: 用户选择 Ignore 按钮; IDNO: 用户选择 No 按钮; IDRETRY: 用户选择 Retry 按钮; IDYES: 用户选择 Yes 按钮;
MessageBox(0,"The astrolabe of the mysteries of God is love",
"Jalal-uddin Rumi said:",MB_OK|MB_ICONEXCLAMATION);
WinMain 函数 下面是 Microsoft 中对 WinMain 的说明: int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInstance, LPSTR lpszCmdParam,int nCmdShow) WinMain 函数有四个参数:
⒈参数是一个唯一的数值或句柄。它与当前程序相关。现在你可以把 HINSTANCE 看作是整型的。不过以后你会看到 HINSTANCE 类型要比初看之时复杂一些。
⒉参数只对 16 位 Windows 是重要的。它是与这个程序的另一个实例相连的唯一句柄(如果存在另一个实例的话)。例如,如果启动了 CLOCK.EXE 的两个副本,这个程序的第二个副本就将第一个副本的 HINSTANCE 作为第二参数。如果程序不存在前一实例,这个参数就置为
NULL。在win32环境下,这个参数不再起作用。
⒊参数是一个字符串,它包含了传给程序的任何参数。这个参数的类型 LPSTR 是 Windows 中一种提法,表示一个指向字符串的 32 位指针。
⒋参数指明程序的窗口该如何显示,最大化或者最小化,参数值由程序的调用者指定。
WinMain 函数返回一个整数,不过 Windows 对这个返回值从来也不做检查。也就是说,当 WinMain 函数结束时,你的应用程序也就结束了。指定返回值主要是为了帮助调试,或者是为了使程序更易阅读。所以,无论 WinMain 返回值为 TRUE 还是 FALSE 都没有什么实际意义。
API 是一组例程,既可以用来控制整个计算机,也可以用来控制计算机的某个特定的功能,例如调制解调器、显示卡或鼠标。例如,你有一组三个例程用来提供程序与鼠标的接口。我把这三个例程叫做 InintializeMouse,SetNousePosition 和 GetMousePosition.
Created by skyline --- 原著:Charles Calvert (美) ---