(Windows可视化程序设计 Page45、Page46、Page47) //------------------------------------------文件wnd2.cpp----------------------------------------#include "wnd2.h" //程序中的头文件 //全局变量 char szTitle[]="简单的Hello程序"; //标题条字符串 char szWindowClass[]="W32"; //窗口类名 char szMenuName[]="NULL"; //菜单名,本程序没有菜单 //****************************************************************** //*主函数WinMain * //*功能:初始化及注册窗口类、创建窗口,进入消息循环及终止应用程序 * //*参数:hInstance 当前实例 * //* hPrevInstance 前一实例 * //* lpCmdLine 命令行 * //* nCmdShow 选择显示窗口或图标 * //*返回值:msg.wParam * //****************************************************************** int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { MSG msg; //声明消息结构对象 InitApplication(hInstance); //注册窗口 //初始化 if(!InitInstance(hInstance,nCmdShow)) return FALSE; //消息循环 while(GetMessage(&msg,NULL,0,0)) //PostQuitMessage(0)结束消息循环 { TranslateMessage(&msg); //检索消息 DispatchMessage(&msg); //将消息间接传给函数指针 } } //****************************************************************** //*函数InitApplication * //*功能:用来注册窗口类 * //*参数:hInstance 当前实例 * //*返回值:如果成功,返回一个惟一的整数;如果失败,返回0 * //****************************************************************** ATOM InitApplication(HINSTANCE hInstance) { WNDCLASS wc; //声明窗口结构对象 //初始化对象wc的域值 wc.style=CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc=(WNDPROC)WndProc; //回调函数的函数指针 wc.cbClsExtra=0; wc.cbWndExtra=0; wc.hInstance=hInstance; wc.hIcon=LoadIcon(NULL,IDI_APPLICATION); wc.hCursor=LoadCursor(NULL,IDC_ARROW); wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName=szMenuName; wc.lpszClassName=szWindowClass; return RegisterClass(&wc); //注册 } //****************************************************************** //*函数InitInstance * //*功能:用来创建主窗口 * //*参数:hInstance 当前实例 * //* nCmdShow 选择显示窗口或图标 * //*返回值:创建成功返回非零值;否则返回0 * //****************************************************************** BOOL InitInstance(HINSTANCE hInstance,int nCmdShow) { HWND hWnd; //声明窗口句柄 //使用CreateWindow函数创建窗口并返回句柄 hWnd=CreateWindow( //填函数参数 szWindowClass, //窗口类名 szTitle, //标题条内容 WS_OVERLAPPEDWINDOW| //显示方式 WS_VSCROLL|WS_HSCROLL, //具有水平和垂直滚动条 400, //X的起点坐标 200, //y的起点坐标 1024, //窗口宽度 768, //窗口高度 NULL, //父窗口句柄 NULL, //窗口菜单句柄 hInstance, //实例句柄 NULL //附加数据 ); if(!hWnd) return FALSE; //判断是否创建成功 ShowWindow(hWnd,nCmdShow); //创建成功则显示窗口 UpdateWindow(hWnd); //送出WM_PAINT消息 return TRUE; //返回创建成功标志 } //------------------------------------------文件wnd21.cpp---------------------------------------- #include "wnd2.h" //程序的头文件 //****************************************************************** //*窗口函数WndProc //*功能:处理主窗口发生的信息 //*参数:hWnd 消息的窗口句柄 //* message 消息 //* wParam MSG消息结构中的域 //* lParam MSG消息结构中的域 //*返回值:0 //****************************************************************** LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; char szHello[]="Hello"; //输出字符串的内容 switch(message) //筛选信息 { case WM_PAINT: //主窗口画图消息 hdc=BeginPaint(hWnd,&ps); TextOut(hdc,80,150,szHello,strlen(szHello)); //输出字符串 EndPaint(hWnd,&ps); break; case WM_DESTROY: //窗口已经撤销,准备结束程序运行 PostQuitMessage(0); //发送WM_QUIT消息,结束消息循环 break; default: return DefWindowProc(hWnd,message,wParam,lParam); } return 0; } //------------------------------------------文件wnd2.h---------------------------------------- #include <windows.h> //Windows程序的头文件 //全局变量 extern char szTitle[]; //标题条字符串 extern char szWindowClass[]; //窗口类名 //函数原型声明 ATOM InitApplication(HINSTANCE); BOOL InitInstance(HINSTANCE,int); LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); int APIENTRY WinMain(HINSTANCE,HINSTANCE,LPSTR,int);