zoukankan      html  css  js  c++  java
  • win32框架

    win32的框架 

    1.入口函数 2.窗口注册类信息 3.窗口创建 4。显示窗口 5.更新窗口 6.消息循环 7.入口函数结束

    WNDCLASSEX wcex;窗口类结构

    wcex.cbSize = sizeof(WNDCLASSEX);//结构内存大小

    //类风格wcex.style CS_HREDRAW 水平刷新 CS_VREDRAW垂直刷新 CS_DBLCLKS 窗体鼠标双击响应事件

     1 //  函数:  MyRegisterClass()
     2 //
     3 //  目的:  注册窗口类。
     4 //
     5 ATOM MyRegisterClass(HINSTANCE hInstance)
     6 {
     7     //窗口类结构
     8     WNDCLASSEX wcex;
     9 
    10     wcex.cbSize = sizeof(WNDCLASSEX);//结构内存大小
    11     //类风格wcex.style  CS_HREDRAW  水平刷新  CS_VREDRAW垂直刷新  CS_DBLCLKS 窗体鼠标双击响应事件
    12     wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
    13     wcex.lpfnWndProc    = WndProc;//消息回调函数
    14     wcex.cbClsExtra        = 0;//类的额外信息
    15     wcex.cbWndExtra        = 0;//窗口的额外信息
    16     wcex.hInstance        = hInstance;//窗口的实例句柄
    17     wcex.hIcon            = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_CLASS02));//图标
    18     wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);//光标
    19     wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);//窗体的背景颜色
    20     wcex.lpszMenuName    = MAKEINTRESOURCE(IDC_CLASS02);//窗体的菜单
    21     wcex.lpszClassName    = szWindowClass;//窗口类名
    22     wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));//小图标
    23 
    24     return RegisterClassEx(&wcex);//系统函数返回一个系统的注册窗口类的函数调用
    25 }

    创建主

     1 //
     2 //   函数:  InitInstance(HINSTANCE, int)
     3 //
     4 //   目的:  保存实例句柄并创建主窗口
     5 //
     6 //   注释: 
     7 //
     8 //        在此函数中,我们在全局变量中保存实例句柄并
     9 //        创建和显示主程序窗口。
    10 //
    11 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
    12 {
    13    HWND hWnd;//窗口句柄
    14 
    15    hInst = hInstance; // 将实例句柄存储在全局变量中
    16 
    17 
    18    //创建窗口
    19    hWnd = CreateWindow(szWindowClass,//窗口类名 类名必须和注册名一致否则创建不成功
    20        _T("第一个Windows窗口")/*szTitle*/,//窗口标题名 
    21        //WS_OVERLAPPEDWINDOW,窗口风格
    22        WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX,
    23        /*
    24                WS_OVERLAPPED:用于产生一个叠层窗口,都有标题栏和边框
    25                WS_CAPTION:有标题栏的窗口
    26                WS_SYSMENU:创建一个标题栏上具有系统菜单的窗口,需要ws_caption一起使用
    27                WS_MINIMAZEBOX:创建具有最小化按钮窗口,必须有ws_system类型
    28                WS_MAXIMIZBOX:创建具有最大化按钮的窗口,必须有ws_system类型。
    29                WS_OVERLAPPEDWINDOW:创建有标题栏,系统菜单最大化最小化窗口
    30                WS_POPUP            - 弹出式
    31                WS_POPUPWINDOW      - 边框、弹出式、系统菜单
    32                WS_SIZEBOX          - 带尺寸框的粗边框
    33                WS_SYSMENU          - 系统菜单       
    34        */
    35       CW_USEDEFAULT,0, //窗口的左上角x,y坐标,注意:如果x坐标给的是CW_USEDEFAULT,y坐标给0表示去匹配x坐标(单位为像素)
    36       CW_USEDEFAULT, 0,//窗口的宽高,同上
    37       NULL,//父窗口句柄
    38       NULL,//菜单句柄,如果值为null,表示默认使用注册时加载的菜单,如果不为null,创建窗口时将用这个菜单替换掉注册时菜单
    39       hInstance,//窗口实例句柄
    40       NULL);//保留参数
    41 
    42    if (!hWnd)
    43    {
    44       return FALSE;
    45    }
    46 
    47    ShowWindow(hWnd, nCmdShow);//显示窗口 
    48    UpdateWindow(hWnd);//更新窗口
    49 
    50    return TRUE;
    51 }

    处理主窗口消息

     1 //  函数:  WndProc(HWND, UINT, WPARAM, LPARAM)
     2 //
     3 //  目的:    处理主窗口的消息。
     4 //
     5 //  WM_COMMAND    - 处理应用程序菜单
     6 //  WM_PAINT    - 绘制主窗口
     7 //  WM_DESTROY    - 发送退出消息并返回
     8 //
     9 //
    10 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    11 {
    12     int wmId, wmEvent;
    13     PAINTSTRUCT ps;
    14     HDC hdc;
    15 
    16     switch (message)
    17     {
    18     case WM_COMMAND:
    19         wmId    = LOWORD(wParam);
    20         wmEvent = HIWORD(wParam);
    21         // 分析菜单选择: 
    22         switch (wmId)
    23         {
    24         case IDM_ABOUT:
    25             DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
    26             break;
    27         case IDM_EXIT:
    28             DestroyWindow(hWnd);
    29             break;
    30         default:
    31             return DefWindowProc(hWnd, message, wParam, lParam);
    32         }
    33         break;
    34     case WM_PAINT:
    35         hdc = BeginPaint(hWnd, &ps);
    36         // TODO:  在此添加任意绘图代码...
    37         EndPaint(hWnd, &ps);
    38         break;
    39     case WM_DESTROY:
    40         PostQuitMessage(0);
    41         break;
    42     default:
    43         return DefWindowProc(hWnd, message, wParam, lParam);
    44     }
    45     return 0;
    46 }
    47 
    48 // “关于”框的消息处理程序。
    49 INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    50 {
    51     UNREFERENCED_PARAMETER(lParam);
    52     switch (message)
    53     {
    54     case WM_INITDIALOG:
    55         return (INT_PTR)TRUE;
    56 
    57     case WM_COMMAND:
    58         if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
    59         {
    60             EndDialog(hDlg, LOWORD(wParam));
    61             return (INT_PTR)TRUE;
    62         }
    63         break;
    64     }
    65     return (INT_PTR)FALSE;
    66 }

    窗口

  • 相关阅读:
    vs调试程序时发现变量、类等程序找不到混乱问题
    ExtJs中XTemplate使用(转)
    windows配置iis网站域名
    Codeforces Round #459 (Div. 2) C (括号问题)
    Codeforces Round #459 (Div. 2) AB
    数据生成python脚本
    腾讯云ubuntu14.04安装hustoj
    ubuntu16.04安装hustoj
    nginx服务器通过server让域名访问二级目录
    Apache服务器通过htaccess让域名指向二级目录
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/11438491.html
Copyright © 2011-2022 走看看