程序左上角的圖標和 桌面工具欄上的圖標,都是通過註冊窗口的那個函數裏面修改 窗口類對象的成員來修改:
//
// 函數: 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文件上的依舊是舊的圖標: