#include<windows.h>
//窗口函数声明
LRESULT CALLBACK WndProc( HWND , UINT , WPARAM , LPARAM ); 
 
//入口函数 WinMain()
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                      LPSTR lpCmdLine, int nCmdShow)
{
     WNDCLASS wndclass;        //定义窗口类结构变量
     HWND hwnd;                //定义窗口句柄
     MSG msg;                  //定义消息结构变量
 
     /********定义窗口类各属性*******/
     wndclass.style=CS_HREDRAW|CS_VREDRAW;       //改变窗口大小则重画
     wndclass.lpfnWndProc=WndProc;               //窗口函数为  WndProc
     wndclass.cbClsExtra=0;                      //窗口类无扩展
     wndclass.cbWndExtra=0;                      //窗口实例无扩展
     wndclass.hInstance=hInstance;               //注册窗口类的实例句柄
     wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //窗口用默认图标
     wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);   //窗口用箭头光标
     wndclass.hbrBackground=( HBRUSH )GetStockObject(WHITE_BRUSH); //背景为白色
     wndclass.lpszMenuName=NULL;                 //窗口默认无菜单
     wndclass.lpszClassName=TEXT( "FirstWinClass" );         //窗口类名为FirstWinClass
     /**********************************/
 
     if (!RegisterClass(&wndclass)) return FALSE; //注册窗口类,失败则返回
 
     //创建窗口
     /****从第一个参数开始代表窗口类名Chap1Exa1,窗口名为Chap1Exa1,重叠式窗口风格,左上角屏幕坐标,
     宽度和高度,窗口无父窗口,窗口无主菜单,创建窗口的实例句柄,此窗口无创建参数****/
     hwnd = CreateWindow(TEXT( "FirstWinClass" ),TEXT( "FirstWinClass" ),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
         CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
     ShowWindow(hwnd,nCmdShow);              //显示窗口
     UpdateWindow(hwnd);                     //更新窗口的客户区
 
     //以下消息循环
     while (GetMessage(&msg,NULL,0,0))        //获取消息,遇WM_QUIT退出循环
     {
         TranslateMessage(&msg);             //键盘消息转换
         DispatchMessage(&msg);              //派送消息给窗口函数
     }
     return msg.wParam;
 
}
 
//窗口函数
LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     switch (message)                  //根据消息值转相应的消息处理
     {
     case WM_PAINT:                   //重画窗口客户区消息
         HDC hdc;                     //定义设备描述表句柄
         PAINTSTRUCT ps;              //定义绘图信息结构变量
         hdc = BeginPaint(hwnd,&ps);  //获取需重画窗口的设备描述表句柄
 
     // TextOut输出文本的GDI函数,客户区坐标(20,60)处显示文本,限制为35个字母
     /***第一个参数为设备描述表句柄,表示在指定设备上输出文本;第二、三个参数指定
     输出位置坐标;第四个参数是要输出的字符串;第五个参数是字符串允许输出的长度****/
         TextOut(hdc, 20, 60,TEXT( "The First Win32 Application Showing Window" ),42);
         EndPaint(hwnd,&ps);          //结束要重画的窗口
         return 0;
     case  WM_DESTROY:                //撤消窗口消息
         PostQuitMessage(0);          //产生退出程序消息WM_QUIT
         return 0;
     }
     return DefWindowProc(hwnd,message,wParam,lParam); //其它转默认窗口函数
}