Windows消息循环模型

简单的放一个最基本的win32程序吧

#include <windows.h> 

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; 

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                    PSTR szCmdLine, int iCmdShow) 
{ 
     static TCHAR szAppName[] = TEXT ("HelloWin") ; 
     HWND         hwnd ; 
     MSG          msg ; 
     WNDCLASS     wndclass ; 

     wndclass.style         = CS_HREDRAW | CS_VREDRAW ; 
     wndclass.lpfnWndProc   = 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 = szAppName ; 

     if (!RegisterClass (&wndclass)) 
     { 
          MessageBox (NULL, TEXT ("This program requires Windows NT!"), 
                      szAppName, MB_ICONERROR) ; 
          return 0 ; 
     } 
     
     hwnd = CreateWindow (szAppName,                  // window class name 
                          TEXT ("The Hello Program"), // window caption 
                          WS_OVERLAPPEDWINDOW,        // window style 
                          CW_USEDEFAULT,              // initial x position 
                          CW_USEDEFAULT,              // initial y position 
                          CW_USEDEFAULT,              // initial x size 
                          CW_USEDEFAULT,              // initial y size 
                          NULL,                       // parent window handle 
                          NULL,                       // window menu handle 
                          hInstance,                  // program instance handle 
                          NULL) ;                     // creation parameters 
     
     ShowWindow (hwnd, iCmdShow) ; 
     UpdateWindow (hwnd) ; 
     
     while (GetMessage (&msg, NULL, 0, 0)) 
     { 
          TranslateMessage (&msg) ; 
          DispatchMessage (&msg) ; 
     } 
     return msg.wParam ; 
} 

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
     HDC         hdc ; 
     PAINTSTRUCT ps ; 
     RECT        rect ; 
     
     switch (message) 
     { 
     case WM_CREATE: 
          PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ; 
          return 0 ; 
          
     case WM_PAINT: 
          hdc = BeginPaint (hwnd, &ps) ; 
          
          GetClientRect (hwnd, &rect) ; 
          
          DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect, 
                    DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; 
          
          EndPaint (hwnd, &ps) ; 
          return 0 ; 
          
     case WM_DESTROY: 
          PostQuitMessage (0) ; 
          return 0 ; 
     } 
     return DefWindowProc (hwnd, message, wParam, lParam) ; 
}

  

转载于:https://www.cnblogs.com/staring-hxs/archive/2013/03/28/2987358.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值