2011-05-31 30 views
0

我遇到了一些問題,顯示我的應用程序創建的對話框的任務欄圖標。主要應用程序是基於Windows應用程序的系統托盤。加載對話框的任務欄圖標問題

下面是我用它來創建對話框代碼:

 g_pMainWnd->m_DlgAuth= new CDlg_Auth(); 
     g_pMainWnd->m_DlgAuth->SetTitle(_T("Authentication"));   
     g_pMainWnd->m_DlgAuth->SetSize(420,420); 
     g_pMainWnd->m_DlgAuth->Create(IDD_DLG_AUTH,AfxGetMainWnd()); 
     g_pMainWnd->m_DlgAuth->ShowWindow(SW_SHOW); 
     g_pMainWnd->m_DlgAuth->SetForegroundWindow(); 

的g_pMainWnd是一個全球性的指針主類,因爲對話的創作從一個子線程回調而成。

任務欄圖標在MFC的OnInitDialog方法創建如下所示:

m_hIcon = (HICON)LoadImage(AfxGetResourceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME),IMAGE_ICON, 0, 0, 0); 

    int cxIcon = GetSystemMetrics(SM_CXSMICON); 
    int cyIcon = GetSystemMetrics(SM_CYSMICON); 

    m_hIconSmall = (HICON)LoadImage(AfxGetResourceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME),IMAGE_ICON 
     ,cxIcon,cyIcon, 0); 

    SetIcon(m_hIconSmall, FALSE);  // Set small icon 
    SetIcon(m_hIcon, TRUE);  // Set small icon 

的小圖標加載完美的問題是與大圖標,但它根本無法加載,手柄被設置和所有看起來不錯,但是當任務欄按鈕顯示時,它顯示默認的Windows控制檯應用程序圖標。

我一直在這裏一個星期了,似乎沒有任何工作。我嘗試了其他32x32圖標,嘗試從另一個線程加載對話框。我試圖讓回調發布消息給主線程來創建對話框。對話框中的所有控件都可以正常工作。它獲取所有必要的信息,但它不繪製圖標。

希望任何可能的幫助。 感謝

+0

一般就固定它,MFC框架挑頭的圖標了。如果其他圖標/資源作爲第一,MFC會無法加載圖標 – 2011-06-01 02:57:47

+0

感謝您的評論。我已經解決了這個問題,並將答案發布到此線程。問題不是來自資源/圖片,但謝謝。 – 2011-06-01 11:30:27

回答

1

通過發送WM_SETICON消息發送到主窗口,而不是調用操作SetIcon功能