1. 程式人生 > >MFC 標題欄動態載入自定義圖示

MFC 標題欄動態載入自定義圖示

1、MFC主窗體的OnInitDialog()中預設會新增以下程式碼:
//CDialog::OnInitDialog();
// TODO: Add extra initialization here
HICON m_hIcon;
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
SetIcon(m_hIcon,TRUE); //設定為大圖示
SetIcon(m_hIcon,FALSE);//設定為小圖示

//return TRUE;

2、其實LoadIcon支援傳入相對或絕對路徑的本地ICON檔案,只是這個介面不知道什麼時候已經停止使用,所以一直呼叫失敗,導致原來預設的圖示也消失了;

m_hIcon = AfxGetApp()->LoadIcon(_T("TestIcon.ico"));

3、通過LoadIcon的百度百科可以查閱到,該介面已經由LoadImage取代,無法實現動態載入ICON功能,故一直嘗試失敗,正確呼叫示例如下:

m_hIcon = (HICON)::LoadImage(NULL,_T("TestIcon.ico"), IMAGE_ICON, 0, 0, LR_LOADFROMFILE);

OK,完美解決,這樣每次需要修改客戶程式版本,就不需要重新編譯程式,而是由客戶替換工作目錄下ICON檔案即可,節省了溝通和編譯的時間與精力,同時也給予客戶最大的修改許可權。

專案需要MFC的自定義載入圖示檔案,不過主要做的UI框架可能是QT和BKWIN,有時間還得研究下這兩個框架下怎麼動態載入圖示檔案和標題欄標題。