win32基本框架

其实win32最主要的特点就是消息循环,它包含了俩个基本的函数

         

         (1)    LRESULT CALLBACK WndProc( HWND hWnd,

                                                                     UINT    message,

                                                                WPARAM   wParam,

                                                                  LPARAM  lParam)

           这个函数叫窗口函数, 接收消息并做出相应处理,比如(WM_MOUSEMOVE、WM_DESTROY),CALLBACK是一种函数调用习惯,被定义为__stdcall,说明此函数为回调函数,由系统自动调用的,当窗口接收到消息并DispatchMessage之后,系统就自动调用窗口函数WndProc了。注意窗口函数中消息的分支结构中default分支必须是return DefWindowProc ( hWnd, message, wParam, lParam );因为不论什么消息都必须被处理,DefWindowProc是windows内部预设的消息处理函数。

        (2)     int  WINAPI WinMain ( HINSTANCE     hInst,

                                                 HINSTANCE      hPrevInst,

                                                          LPSTR       lpCmdLine,

                                                                  int       nCmdShow )

     参数说明:hInst 为当前实例句柄,Windows 环境下用于区别同一应用程序的不同实例;hPrevInst应用程序先前实例的句柄(如果有的话),否则为 NULL,可以用来确定当前实例是否为应用程序的第一个实例;lpCmdLine是以NULL结尾的命令行字符串长指针;nCmdShow指定窗口初始显示方式的整型常量(1 = 通常;7 = 最小化)

     

框架结构与步骤

   注册窗口---->创建窗口----->显示和更新窗口---->消息循环

 

  WNDCLASSEX   wcex;

  wcex.cbSize           = sizeof( WNDCLASSEX );

  wcex.style               = CS_HREDRAW | CS_VREDRAW;

  wcex.lpfnWndProc = (WNDPROC) WndProc

   ............................

  RegisterClassEx(&wcex);                                          //注册窗口

 

 HWND hwnd;                                                                  //定义一个句柄,把生成的窗口句柄赋给hwnd

 hwnd=CreateWindow("Weixin2003",

                                     "This is my test ! ",

                           WS_OVERLAPPEDWINDOW,

                           0,0,600,400,NULL,NULL,

                               hInstance,NULL);                   // 根据初始化的窗口类,创建该窗口。并把句柄赋给hwnd。

如果想要全屏显示的话,屏幕参数可以为

0, 0, ::GetSystemMetrics(SM_CXSCREEN), ::GetSystemMetrics(SM_CYSCREEN),

 

//显示和更新窗口

ShowWindow(hwnd,nCmdShow);

  UpdateWindow(hwnd);

 

//消息循环

     while(GetMessage(&Msg,NULL,0,0))

     {

         TranslateMessage(&Msg);

         DispatchMessage(&Msg);         //对消息反应就会自动调用窗口函数

    }

 

//窗口函数

LRESULT CALLBACK WndProc( HWND hWnd,

                                                             UINT    message,

                                                      WPARAM   wParam,

                                                           LPARAM  lParam)

{

    switch(message)

    {

       case WM_DESTROY:                                                                                 //结束应用程序
                      PostQuitMessage(0);
                      break;
      default:
                return DefWindowProc(hWnd, message, wParam, lParam);        //调用内被预设的消息处理函数,是必须写的
   }

}

这样,一个win32窗口框架程序就介绍完了~~

 

 

 

 


 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值