Win32学习笔记
作者: 姜学哲(netsail0@163.net)
教材: Windows程序设计(第五版)北京大学出版社
[美]Charles Petzold 著
北京博彦科技发展有限公司 译 ¥:160
环境: windows2000 server + Internet Explorer 6.0 + DirectX7.0 + Visual C++ 6.0
(图们江计算机程序编制小组版权所有,转载请说明出处)
---------------------------------------------------------------------------------
第一章 开始
从第N页的 对《windows程序设计》的评论 开始叽叽歪歪一大堆赞扬之词过后,在第十页我总于见到了main(),让我感到无比亲切!
#include<stdio.h>
int main()
{
printf("Hello World/n");
return 0;
}
紧接着就是WINDOWS版本的等价程序
1.3.2 Windows等价程序
/******************************************************
Copyright(c) 2003, TUMEN Programming Clan
(netsail0@163.net) All rights reserved.
Filename: HelloMsg
Author: Hack-Chul Kang
******************************************************/
#include<windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
MessageBox(NULL, TEXT("Hello, Windows98!"), TEXT("HelloMsg"), 0);
return 0;
}
运行上面的程序后会随着“叮”的一声,出现一个对话框。可以看到标题栏上有HelloMsg,对话框中央出现Hello Windows98!字样,以及一个“大大”的‘确定’按钮。恭喜恭喜!你的第一个WINDOWS程序已经问世了!
在标准C中我们需要stdio.h,而在WINDOWS的C中我们需要的是windows.h。
第十二页中对程序入口点做了介绍。请先不要理会那四个长长的参数。前面说过,就当他不存在就可以了。我们要关注的是MessageBox()。
首先要解释的是TEXT()。这是一个宏定义,也就是用define定义的。这是为了兼容UNICODE字符集而做的改动。以后不管是什么时候,您最好把字符串都用TEXT()括起来,有关UNICODE您可以看第二章。
第十三页
#define MB_OK 0x00000000L
#define MB_OKCANCEL 0x00000001L
#define MB_ABORTRETRYIGNORE 0x00000002L
#define MB_YESNOCANCEL 0x00000003L
#define MB_YESNO 0x00000004L
#define MB_RETRYCANCEL 0x00000005L
上面的是MessageBox()的第四个参数选项。想了解他们的具体含义很简单。上面的HelloMsg程序中MessageBox()的第四个参数是零,您可以把那个零换成上面六个常量中的一个,比如:
MessageBox(NULL, TEXT("Hello Windows98!"), TEXT("HelloMsg"), MB_OKCANCEL);
重新运行后您会发现对话框中多了一个'取消'按钮。如果您使用的是英文版,两个按钮分别是 OK & CANCEL。您可以一个一个的试。
第十四页
#define MB_ICONHAND 0x00000010L
#define MB_ICONQUESTION 0x00000020L
#define MB_ICONEXCLAMATION 0x00000030L
#define MB_ICONASTERISK 0x00000040L
这些都是对话框中的图标选项。可以用C语言中“|”运算符与前面所提到的六个选项中的一个结合起来,比如:
MessageBox(NULL, TEXT("Hello Windows98!"), TEXT("HelloMsg"), MB_OKCANCEL | MB_ICONHAND);
运行上面的程序后您将会看到原先的对话框中多出了一个红色的图标,那是一个表示出错时用的“叉叉”,这个图标我不喜欢,我比较喜欢感叹号,所以把程序改成:
MessageBox(NULL, TEXT("Hello Windows98!"), TEXT("HelloMsg"), MB_OKCANCEL | MB_ICONASTERISK);
运行后您可以'高兴'地看到对话框中出现了一个白底蓝字的感叹号。
这样以来,您是不是对MessageBox()的后三个参数有所了解了呢?至于第一个参数,等到第三章时再议吧。What??您还是有点迷惑?-_-#我建议您给比尔-盖茨邮寄一个C4。