zoukankan      html  css  js  c++  java
  • 2)添加光标和图标

    1)首先是昨天的代码进行展示:

      

     1 #include<Windows.h>
     2 #include"resource.h"
     3 //这个叫  窗口消息处理函数
     4 LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
     5 {
     6     
     7     return ::DefWindowProc( hWnd, uMsg, wParam, lParam);
     8 }
     9 
    10 
    11 int CALLBACK WinMain(HINSTANCE hIstance,
    12                      HINSTANCE hPreInstance,
    13                      LPSTR pCmdLine,
    14                      int nCmdShow)
    15 {
    16             
    17     HBRUSH hBrush=::CreateSolidBrush(RGB(0,0,255));
    18             
    19     
    20     //1.设计---->就是给WNDCLASSEX结构体初始化(结构体有12个)
    21             WNDCLASSEX wndclass;
    22             wndclass.cbClsExtra=0;
    23             wndclass.cbWndExtra=0;//这两个是确定是否要分配额外的空间
    24             wndclass.cbSize=sizeof(WNDCLASSEX);
    25             wndclass.hbrBackground=hBrush;
    26             wndclass.hCursor=NULL;//光标
    27             wndclass.hIcon=NULL;//窗口图标
    28             wndclass.hIconSm=NULL;//窗口左上的图标
    29             wndclass.hInstance=hIstance;
    30             wndclass.lpfnWndProc=WndProc;
    31             wndclass.lpszClassName="wangchao";
    32             wndclass.lpszMenuName=NULL;
    33             wndclass.style=CS_HREDRAW|CS_VREDRAW;
    34 
    35     //2.注册(将上面的那个窗口给注册上)
    36             if(::RegisterClassEx(&wndclass)==FALSE)
    37             {
    38                 ::MessageBox(NULL,"dhsakfljadsf","提示",MB_OK);
    39                 
    40                 return 0;
    41             }
    42     //3.创建
    43                     
    44             HWND hWnd=::CreateWindow("wangchao","xiao_hua",WS_OVERLAPPEDWINDOW,100,0,500,500,NULL,NULL,hIstance,NULL);
    45             
    46         if(hWnd==NULL)
    47         {
    48             ::MessageBox(NULL,"创建失败","提示",MB_OK);
    49             return 0;
    50         }
    51     //4.显式
    52             //这个SW_SHOW就是一个宏,它就是ShowWindow-->SW,SW_SHOW显式,SW_HIDE隐藏
    53             //第一个变量是显式哪一个窗口,就是上面的我们创建的那个hWnd
    54         ::ShowWindow(hWnd,SW_SHOW);
    55     //5.消息循环
    56         //定义一个消息句柄
    57             MSG msg;
    58             //函数的第一个变量是 取到的什么消息,第二个是这个消息是来自哪一个窗口(如果给0,说的是所有窗口的消息)
    59             //最后那个是消息的范围,0,0是所有的范围,要是写10  20  就是取第10个到第20个消息
    60             while(::GetMessage(&msg,0,0,0))
    61         {
    62             //第一步先翻译
    63             ::TranslateMessage(&msg);
    64             //第二部分发
    65             ::DispatchMessageA(&msg);
    66 
    67         }
    68 
    69 
    70     ::DeleteObject(hBrush);
    71 }

    2)然后  我们进行添加光标 ,就是修改下面的代码:

          

        首先是修改光标,光标需要加载(什么加载不加载的,其实就是贴图,那么这个光标的图片来自哪里,步骤:       

         (1)点开

                  

          (2)然后,右面(或者左面)就出现:

                  

          (3)然后出现:

                  

         (4)然后点击  “Cursor”----->新建

                  

           (5)在左侧(或者右侧)就出现resource.h头文件,

        

           (6)然后,我修改我的WinMaincpp.cpp 光标那里的代码:

                    

            直接放到这里不行,因为LoadCursor那个函数的第二个形参是 字符串,所以 看你的帮助文档:

                                              ---->点着这个LoadCursor函数-->按下F1---->找到了下面的内容:

          

                  哎,总之是,需要你将那个游标的ID(整型)转定义一下  用MAKEINTRESOURCE  

          

    4)修改你的图标:

      

     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  

    ~~~~~~~~~~你的resource.h文件内容也发生了变化:

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                                

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    ~~~~~~~~~~~~然后修改你的WinMaincpp.cpp的代码~~~~~~~~~~

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    1 wndclass.hIcon=::LoadIcon(hIstance,MAKEINTRESOURCE(IDI_ICON1));//窗口图标

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    ~~~~~~~~~~~~~~~~~~~结果展示:~~~~~~~~~~~~~~~~~~~~~~

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                                 

        

     

    5)总的代码展示:  

            

    同时加了消息的一个处理过程:

     

     1 #include<Windows.h>
     2 #include"resource.h"
     3 //这个叫  窗口消息处理函数
     4 LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
     5 {
     6     switch(uMsg)
     7     {
     8     case WM_CLOSE://点那个×,窗口关闭
     9         ::PostQuitMessage(0);//消息推出
    10         break;
    11     }
    12     return ::DefWindowProc( hWnd, uMsg, wParam, lParam);
    13 }
    14 
    15 
    16 int CALLBACK WinMain(HINSTANCE hIstance,
    17                      HINSTANCE hPreInstance,
    18                      LPSTR pCmdLine,
    19                      int nCmdShow)
    20 {
    21             
    22     HBRUSH hBrush=::CreateSolidBrush(RGB(0,0,255));
    23             
    24     
    25     //1.设计---->就是给WNDCLASSEX结构体初始化(结构体有12个)
    26             WNDCLASSEX wndclass;
    27             wndclass.cbClsExtra=0;
    28             wndclass.cbWndExtra=0;//这两个是确定是否要分配额外的空间
    29             wndclass.cbSize=sizeof(WNDCLASSEX);
    30             wndclass.hbrBackground=hBrush;
    31             wndclass.hCursor=::LoadCursor(hIstance,MAKEINTRESOURCE (IDC_CURSOR1));//光标
    32             //因为上面的那个LoadCUrsor是需要字符串,但是那个IDC_CURSOR1是一个整型数字,所以  需要用那个宏给转定义一下
    33             wndclass.hIcon=::LoadIcon(hIstance,MAKEINTRESOURCE(IDI_ICON1));//窗口图标
    34             wndclass.hIconSm=NULL;//窗口左上的图标
    35             wndclass.hInstance=hIstance;
    36             wndclass.lpfnWndProc=WndProc;
    37             wndclass.lpszClassName="wangchao";
    38             wndclass.lpszMenuName=NULL;
    39             wndclass.style=CS_HREDRAW|CS_VREDRAW;
    40 
    41     //2.注册(将上面的那个窗口给注册上)
    42             if(::RegisterClassEx(&wndclass)==FALSE)
    43             {
    44                 ::MessageBox(NULL,"dhsakfljadsf","提示",MB_OK);
    45                 
    46                 return 0;
    47             }
    48     //3.创建
    49                     
    50             HWND hWnd=::CreateWindow("wangchao","xiao_hua",WS_OVERLAPPEDWINDOW,100,0,500,500,NULL,NULL,hIstance,NULL);
    51             
    52         if(hWnd==NULL)
    53         {
    54             ::MessageBox(NULL,"创建失败","提示",MB_OK);
    55             return 0;
    56         }
    57     //4.显式
    58             //这个SW_SHOW就是一个宏,它就是ShowWindow-->SW,SW_SHOW显式,SW_HIDE隐藏
    59             //第一个变量是显式哪一个窗口,就是上面的我们创建的那个hWnd
    60         ::ShowWindow(hWnd,SW_SHOW);
    61     //5.消息循环
    62         //定义一个消息句柄
    63             MSG msg;
    64             //函数的第一个变量是 取到的什么消息,第二个是这个消息是来自哪一个窗口(如果给0,说的是所有窗口的消息)
    65             //最后那个是消息的范围,0,0是所有的范围,要是写10  20  就是取第10个到第20个消息
    66             while(::GetMessage(&msg,0,0,0))
    67         {
    68             //第一步先翻译
    69             ::TranslateMessage(&msg);
    70             //第二部分发
    71             ::DispatchMessageA(&msg);
    72 
    73         }
    74 
    75 
    76     ::DeleteObject(hBrush);
    77 }

           

  • 相关阅读:
    c/c++字节序转换(转)
    O_DIRECT与O_SYNC区别(转)
    TCMalloc小记(转)
    内存优化总结:ptmalloc、tcmalloc和jemalloc(转)
    不依赖三方库从图像数据中获取宽高-gif、bmp、png、jepg
    Linux查看物理CPU个数、核数、逻辑CPU个数
    unix环境高级编程-3.10-文件共享(转)
    TF_Server gRPC failed, call return code:8:Received message larger than max (45129801 vs. 4194304)
    google doc上的云转换
    telnet 退出命令
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/8303457.html
Copyright © 2011-2022 走看看