日期:2014-05-16 浏览次数:20898 次
我们不能在消息框中显示图形,而且也不能在消息框中添加菜单。要添加这些对象,就需要建立自己的窗口,现在就开始。
建立窗口很简单,只需呼叫CreateWindow函数即可。建立一个窗口首先需要注册一个窗口类别,那需要一个窗口消息处理程序来处理窗口消息。处理窗口消息对每个Windows程序都带来了些负担。
代码及其详细注释如下:
/*------------------------
HELLOWIN.C -- Displays "Hello, Windows 98!" in client area
(c) Charles Petzold, 1998
------------------------*/
#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;//窗口消息处理程序声明:
//LRERULT为函数返回值类型,宏定义为LONG;
//CALLBACK说明的是函数参数的进栈顺序(从左到右)
//WndProc为函数名,可任意改
//4个函数参数为message结构体中的前4个参数,
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow) //主函数,Windows程序进入点;其中,int为函数返回值类型,WINAPI说明的是函数的进栈顺序。
//第一个参数为执行实体(程序自身)句柄,唯一的标识该程序;第二个参数在32位的Windows中已失去了意义,总是NULL;
//第三个参数是用于执行程序的命令列;第四个参数指出窗口最初的显示方式,最小化、最大化、还是正常显示。
{
static TCHAR szAppName[] = TEXT ("HelloWin") ; //定义一个字符串数组,并赋以初值“HelloWin”,这个“HelloWin”是程序的名字
//是要进操作系统的注册表的!是告诉操作系统你这个程序的名字是什么!
HWND hwnd ; //定义窗口句柄
MSG msg ; //结构体类型MSG的变量申明,该结构体中有六个成员变量,储存有关消息的信息
WNDCLASS wndclass ; //结构体类型WNDCLASS的变量申明,以下为该变量成员的初始化
wndclass.style = CS_HREDRAW | CS_VREDRAW ; //CS_HREDRAW表示水平重画,即水平拖动窗口时,会调用WM_PAINT消息重画窗口,调整窗口尺寸
//CS_VREDRAW表示垂直重画,即垂直拖动窗口时,会调用WM_PAINT消息重画窗口,调整窗口尺寸
wndclass.lpfnWndProc = WndProc ; //该字段是依据这个窗口类别来建立的所有窗口的消息处理程序的地址
wndclass.cbClsExtra = 0 ; //预留空间的附加值,此程序没用到这个域!
wndclass.cbWndExtra = 0 ; //预留空间的附加值,此程序没用到这个域!
wndclass.hInstance = hInstance ; //该字段为执行实体句柄,初始化为WinMain中的第一个参数
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; //装载图标函数。当装载自己的图标时,第一个参数设为hInstance
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; //装载光标函数。也可装载自己的光标
wndclass.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH) ; //该字段为依据该类别建立的窗口背景颜色。此程序中设为黑色背景,可根据需要设置颜色
wndclass.lpszMenuName = NULL ;