您的位置:首页 > 其它

win32基本框架

2011-07-17 08:26 399 查看
其实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窗口框架程序就介绍完了~~ 
 
 
 

 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息