WIN32桌面程序修改圖標

程序左上角的圖標和 桌面工具欄上的圖標,都是通過註冊窗口的那個函數裏面修改 窗口類對象的成員來修改:


//
//  函數: 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文件上的依舊是舊的圖標:

 

或者: 把debug目錄挪到別的路徑下,圖標就變成想要的了。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章