一、准备知识:
一、图标:(文件格式为 .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));
作者说:
我还有好多未完成的梦,没有理由停下前进的脚步!