程序左上角的图标和 桌面工具栏上的图标,都是通过注册窗口的那个函数里面修改 窗口类对象的成员来修改:
//
// 函数: MyRegisterClass()
//
// 目标: 注册窗口类。
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEXW wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
// wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT1));//加载系统图标,第一个参数要为null
//wcex.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(32512));
//桌面工具栏上的图标
wcex.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_INFORMATION));
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;// MAKEINTRESOURCEW(IDC_WINDOWSPROJECT1);
wcex.lpszClassName = szWindowClass;
//wcex.hIconSm = NULL;// LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
//程序左上角图标
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_CYCLE));
return RegisterClassExW(&wcex);
}
2. exe程序的桌面图标的修改:
看到一个方式,是用Icon下几个图标中value值最小的,比IDR_MAINFRAME的ID数值小,所以想更改生成的exe文件图标,要保证图标的value值是Icon下几个图标中最小的了;
修改这个ID值,主要在Resource.h中,将自己加的icon资源Value改为最小,并且定义的位置顺序也要放在前面,因此不一定要删除IDR_MAINFRAME.
然后编译运行,找到你的debug目录,一般将看到图标已经更改的.exe执行文件。
问题:
经常会编译运行后,发下debug目录下的exe文件图标没有改,但将exe文件拷贝出debug目录,放到其他地方,图标就会改变了,而一放回去,则又变回旧的图标了。。。
然后,我把这个debug改成debug2, 就是改个名字,图标就变成我想要的了;然后把目录名字又该回去debug,图标有变成旧的了。。。搞不懂。。。
后续发现:
右键exe文件, 查看属性,发下属性窗口上的图标是自己想要的,而exe文件上的依旧是旧的图标: