Win32设计图标、光标样式和窗口标题(简单易懂)

一、准备知识:

一、图标:(文件格式为 .ico)
图标有两种,分别是大图标(wc.hIcon)和小图标(wc.hIconSm)。

大图标:任务栏中程序图标
在这里插入图片描述
小图标:窗口上的图标
在这里插入图片描述

图标文件格式.ioc的转换:
1.可通过格式转换软件,比如格式工厂。
2.在线网站转换,在线版PDF转换器

二、光标:(静态光标文件格式.cur)、(动态光标文件格式 .ani)
就是在运行窗口上的光标。
在这里插入图片描述

光标文件.cur和.ani的获得:
1.使用Axialis CursorWorkshop软件可以自己制作,也可转换,然后保存即可。
2…可通过其他格式转换软件。


二、窗口创建前设计

步骤:
1.添加资源。(以下有详细操作)
2.加载图标和光标。(使用LoadCursor函数或LoadImage函数)

1.添加资源步骤:

右击资源文件----添加----资源----添加图标点击Icon、添加光标点击Cursor----然后点导入

在这里插入图片描述


有几点说明一下:
1.在添加第一个资源后,会自动生成一个resource.h个头文件,此时需要添加头文件 “#includeresource.h”
2.在添加第一个资源后,也会在资源文件里生成一个.rc的文件,点击后会有如下图,也可在这添加资源文件,IDC_CURSOR1,IDC_CURSOR2这些是文件名。
在这里插入图片描述
在这里插入图片描述


2.加载图标光标:

通过使用LoadCursor函数或LoadImage函数加载

// 加载大图标
wc.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_ICON1);
或wc.hIcon = (HICON)LoadImage(hInstance, (LPCTSTR)IDI_ICON1, IMAGE_ICON, 0, 0, LR_CREATEDIBSECTION);

// 加载小图标
wc.hIconSm = LoadIcon(hInstance, IDI_APPLICATION);
或wc.hIconSm  = (HICON)LoadImage(hInstance, (LPCTSTR)IDI_ICON1, IMAGE_ICON, 0, 0, LR_CREATEDIBSECTION);

// 加载光标
wc.hCursor = LoadCursor(hInstance, (LPCTSTR)IDC_CURSOR1);
或wc.hCursor = (HICON)LoadImage(hInstance, (LPCTSTR)IDC_CURSOR1, IMAGE_CURSOR, 0, 0, LR_CREATEDIBSECTION);

补充:代码(LPCTSTR)IDI_ICON1可用MAKEINTRESOURCE(IDI_ICON1)代替。一定记得加上"#includeresource.h"头文件。


窗口标题设计:
窗口标题的设计很简单,只需要在窗口创建CreateWindowEx函数中设计就行。

hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("Windows"),
                      TEXT("奇怪的大冒险"),  // 设计窗口标题
                      WS_VISIBLE | WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,
                       640, 480,   // 设计窗口大小
                       NULL, NULL, hInstance, NULL);

三、窗口创建后设置

API函数:
1. 重新指定窗口所属窗口类的WNDCLASSEX结构体成员的值SetClassLong
2. 设置光标:SetCursor

1.SetClassLong函数:图标、光标、标题等都能改

函数的功能:它会替换存储空间中指定偏移量处的32位长整型值,或替换指定窗口所属类的WNDCLASSEX结构(应该是替换这个结构体中的,并没有把结构体给换了)。

DWORD SetClassLong(HWND hWnd,      // 窗口句柄及间接给出的窗口所属的类
                    int nlndex,     // 需要背修改替换的值
                    LONG dwNewLong) // 新的值  --注意结构类型的转化

 // 实例:修改光标
 SetClassLong(hwnd, GCL_HCURSOR , (LONG)LoadCursor(NULL, IDC_CROSS));
nlndex的值 说明
GCL_CBCLSEXTRA 设置与类相关的尺寸的字节大小。设定该值不改变己分配的额外字节数。
GCL_CBWNDEXTRA 设置与类中的每一个窗口相关的尺寸的字节大小。设定该值不改变已分配额外字节数。查看如何进入该内存,参看SetWindowLOng。
GCL_HBRBACKGROUND 替换与类有关的背景刷子的句柄。
GCL_HCURSOR 替换与类有关的光标的句柄。
GCL_HICON 替换与类有关的图标的句柄。
GCL_HMODULE 替换注册类的模块的句柄。
GCL_STYLE 替换窗口类的风格位。
GCL_MENUNAME 替换菜单名字符串的地址。该字符串标识与类有关的菜单资源。
GCL_WNDPROC 替换与窗口类有关的窗口过程的地址。

2.SetCursor函数:设置光标

// 函数原型:
HCURSOR SetCursor(HCURSOR hCursor);// 光标句柄

// 实例:
SetCursor(LoadCursor(NULL, IDC_CROSS));

作者说:
我还有好多未完成的梦,没有理由停下前进的脚步!

发布了30 篇原创文章 · 获赞 37 · 访问量 5502

猜你喜欢

转载自blog.csdn.net/qq_45021180/article/details/99684728