zoukankan      html  css  js  c++  java
  • 119.WIN32窗口原理

     1 #include <Windows.h>
     2 
     3 //处理消息的回调函数
     4 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
     5 
     6 int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hpreinstance, PSTR szcmdline, int icmdshow)
     7 {
     8     //设置窗口的名字
     9     static TCHAR szappname[100] = TEXT("mywindow");
    10     
    11     //窗口类
    12     WNDCLASS wndclass;
    13     //风格
    14     wndclass.style = CS_HREDRAW | CS_VREDRAW;
    15     wndclass.lpszClassName = szappname;//设置名字
    16     wndclass.lpszMenuName = NULL;
    17     wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//设置背景
    18     wndclass.lpfnWndProc = WndProc;//设置回调函数处理窗口
    19     wndclass.cbClsExtra = wndclass.cbWndExtra = 0;//拓展
    20     wndclass.hInstance = hinstance;//窗口句柄
    21     wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);//载入图标
    22     wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);//载入鼠标风格
    23 
    24     //通过名字,注册窗口
    25     if (!RegisterClass(&wndclass))
    26     {
    27         MessageBoxA(0, "窗口注册失败", "提示", 0);
    28         return 0;
    29     }
    30     
    31     //通过名字,创建窗口
    32     HWND hwnd = CreateWindow(szappname,//窗口名字
    33         TEXT("窗口"),//窗口标题
    34         WS_OVERLAPPEDWINDOW,//窗口风格
    35         CW_USEDEFAULT,//默认显示位置x
    36         CW_USEDEFAULT,//默认显示位置y
    37         CW_USEDEFAULT,//默认宽度
    38         CW_USEDEFAULT,//默认高度
    39         NULL,//子窗口
    40         NULL,//子菜单
    41         hinstance,//窗口句柄
    42         NULL);
    43 
    44     ShowWindow(hwnd, SW_SHOW);
    45     UpdateWindow(hwnd);//显示并更新
    46     MSG msg;//消息
    47     //消息循环(GetMessage 创建事件 TranslateMessage DispatchMessage响应事件)
    48     while (GetMessage(&msg,NULL,0,0))
    49     {
    50         TranslateMessage(&msg);
    51         //调用回调函数
    52         DispatchMessage(&msg);
    53     }
    54 
    55     return msg.wParam;
    56 }
    57 
    58 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
    59 {
    60     //设备环境
    61     HDC hdc;
    62     PAINTSTRUCT ps;
    63     RECT rect;
    64     switch (message)
    65     {
    66     case WM_LBUTTONDOWN:
    67         MessageBoxA(0, "按下鼠标左键", "提示", 0);
    68         break;
    69     case WM_RBUTTONDOWN:
    70         MessageBoxA(0, "按下鼠标左键", "提示", 0);
    71         break;
    72     case WM_CLOSE:
    73         if (MessageBoxA(0, "是否关闭窗口", "提示", 1) == 1)
    74         {
    75             //关闭窗口,发送WM_DESTROY消息
    76             DestroyWindow(hwnd);
    77         }
    78         else
    79         {
    80             return 0;
    81         }
    82         break;
    83     case WM_DESTROY:
    84         MessageBoxA(0, "已成功关闭", "提示", 0);
    85         exit(0);
    86         break;
    87     default:
    88         break;
    89     }
    90     return DefWindowProc(hwnd, message, wparam, lparam);
    91 }
  • 相关阅读:
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    网络爬虫基础练习
    Mysql 使用 select into outfile
    Mysql 使用CMD 登陆
    使用Clean() 去掉由函数自动生成的字符串中的双引号
    Get Resultset from Oracle Stored procedure
    获取引用某个主键的所有外键的表
    Entity Framework 丢失数据链接的绑定,在已绑好的EDMX中提示“Choose Your Data Connection”
    添加MySql Metat Database 信息
    at System.Data.EntityClient.EntityConnection.GetFactory(String providerString)
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8538613.html
Copyright © 2011-2022 走看看