Windows程序设计----Windows程序基本结构

 

  
  
  
  
  1. /*------------------------------------------------------------ 
  2.    HELLOWIN.C -- Displays "Hello, Windows 7!" in client area 
  3.                  (c) Charles Petzold, 2013 
  4.   ------------------------------------------------------------*/ 
  5.  
  6. #include <windows.h> 
  7.   
  8. LRESULT CALLBACK WndProc (HWNDUINTWPARAMLPARAM) ; 
  9.  
  10. int WINAPI WinMain (HINSTANCE hInstance,        //标识这个程序的实例句柄 
  11.                     HINSTANCE hPrevInstance,    //32位程序中值为NULL 
  12.                     PSTR szCmdLine,             //用来运行程序的命令行 
  13.                     int iCmdShow)               //用来指明程序最初如何显示-正常显示-最大化-最小化 
  14.      static TCHAR szAppName[] = TEXT ("HelloWin") ; 
  15.      HWND         hwnd ;        //窗口句柄 
  16.      MSG          msg ;         //消息结构 
  17.      WNDCLASS     wndclass ;    //窗口类结构 
  18.  
  19.      wndclass.style         = CS_HREDRAW | CS_VREDRAW ;             //类风格 
  20.      wndclass.lpfnWndProc   = WndProc ;                             //窗口过程函数 
  21.      wndclass.cbClsExtra    = 0 ;       //用于在类结构和Windows内部维护 
  22.      wndclass.cbWndExtra    = 0 ;       //的窗口结构中预留一些额外的空间 
  23.      wndclass.hInstance     = hInstance ;                           //实例句柄 
  24.      wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;    //设定窗口图标 
  25.      wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;        //设定鼠标指针 
  26.      wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;//指定客户区背景色 
  27.      wndclass.lpszMenuName  = NULL ;        //指定窗口类菜单 
  28.      wndclass.lpszClassName = szAppName ;   //设定窗口类名称 
  29.  
  30.      if (!RegisterClass (&wndclass))//注册窗口类 
  31.      { 
  32.           MessageBox (NULL, TEXT ("This program requires Windows NT!"),  
  33.                       szAppName, MB_ICONERROR) ; 
  34.           return 0 ; 
  35.      } 
  36.       
  37.      hwnd = CreateWindow (szAppName,                  // 窗口类名称 
  38.                           TEXT ("The Hello Program"), // 窗口标题 
  39.                           WS_OVERLAPPEDWINDOW,        // 窗口风格 
  40.                           CW_USEDEFAULT,              // 初始x坐标 
  41.                           CW_USEDEFAULT,              // 初始y坐标 
  42.                           CW_USEDEFAULT,              // 初始x方向尺寸 
  43.                           CW_USEDEFAULT,              // 初始y方向尺寸 
  44.                           NULL,                       // 父窗口句柄 
  45.                           NULL,                       // 窗口菜单句柄 
  46.                           hInstance,                  // 程序实例句柄 
  47.                           NULL) ;                     // 创建参数 
  48.       
  49.      ShowWindow (hwnd, iCmdShow) ;  //显示窗口 
  50.      UpdateWindow (hwnd) ;          //使客户区重绘 
  51.       
  52.      while (GetMessage (&msg, NULL, 0, 0))  //消息循环,收到WM_QUIT消息时GetMessage返回0 
  53.      { 
  54.           TranslateMessage (&msg) ; //将msg结构返还给Windows以进行某些消息的转换 
  55.           DispatchMessage (&msg) ;  //将msg结构返回给Windows 
  56.      } 
  57.      return msg.wParam ; 
  58.  
  59. LRESULT CALLBACK WndProc (HWND hwnd,        // 
  60.                           UINT message,     //这四个参数对应MSG结构的前4个字段 
  61.                           WPARAM wParam,    // 
  62.                           LPARAM lParam)    // 
  63.      HDC         hdc ;  //设备环境句柄 
  64.      PAINTSTRUCT ps ; 
  65.      RECT        rect ; 
  66.       
  67.      switch (message)   //选择消息进行处理 
  68.      { 
  69.      case WM_CREATE:    //调用CreateWindow时产生 
  70.           PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ; 
  71.           return 0 ; 
  72.            
  73.      case WM_PAINT:     //当客户区部分或全部无效,必须重绘时产生 
  74.           hdc = BeginPaint (hwnd, &ps) ; 
  75.            
  76.           GetClientRect (hwnd, &rect) ; 
  77.            
  78.           DrawText (hdc, TEXT ("Hello, Windows 7!"), -1, &rect, 
  79.                     DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; 
  80.            
  81.           EndPaint (hwnd, &ps) ; 
  82.           return 0 ; 
  83.            
  84.      case WM_DESTROY:   //单击关闭按钮时产生 
  85.           PostQuitMessage (0) ;     //将一个WM_QUIT消息插入到消息队列中 
  86.           return 0 ; 
  87.      } 
  88.      return DefWindowProc (hwnd, message, wParam, lParam) ; 

你可能感兴趣的:(windows,windows程序设计)