博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2)添加光标和图标
阅读量:5074 次
发布时间:2019-06-12

本文共 5938 字,大约阅读时间需要 19 分钟。

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

  

1 #include
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 //第一个变量是显式哪一个窗口,就是上面的我们创建的那个hWnd54 ::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(整型)转定义一下  用  

      

 

 

4)修改你的图标:

  

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

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

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

                            

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

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

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

 

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

 

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

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

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

                             

 

    

 

5)总的代码展示:  

        

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

 

 

1 #include
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 //第一个变量是显式哪一个窗口,就是上面的我们创建的那个hWnd60 ::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 }

 

       

转载于:https://www.cnblogs.com/xiaoyoucai/p/8303457.html

你可能感兴趣的文章
iOS基础-UIKit框架-多控制器管理-实例:qq界面框架
查看>>
自定义tabbar(纯代码)
查看>>
小程序底部导航栏
查看>>
poj1611 简单并查集
查看>>
Ubuntu 14.04下安装CUDA8.0
查看>>
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>
C# BS消息推送 SignalR介绍(一)
查看>>
WPF星空效果
查看>>
WPF Layout 系统概述——Arrange
查看>>
PIGOSS
查看>>
几款Http小服务器
查看>>
css3动画属性
查看>>
Mongodb 基本命令
查看>>
控制文件的备份与恢复
查看>>
软件目录结构规范
查看>>
mysqladmin
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
[置顶] Android仿人人客户端(v5.7.1)——人人授权访问界面
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>