2011-07-27 56 views
1

我正在使用wxWidgets(2.9分支)處理項目。我使用的是gcc和makefiles - 我在與Visual Studio交易時發現的大部分問題。在wxMSW中設置窗口的左上角圖標

問題是,我用IcoFX創建了一個圖標,它包含幾個不同尺寸的圖標,其中包括應該顯示在窗口一角的16x16圖標。該圖標確實顯示在Windows 7任務欄中,但不顯示在窗口的角落或Alt + Tab菜單中。

我的資源文件是這樣的:

#include "wx/msw/wx.rc" 
1 ICON "images/icon-win.ico" 

不管是什麼,我把作爲圖標的標識符(試過1,0,字符串,WX ***)它不會改變任何東西。

我使用windres將資源文件編譯爲COFF格式,然後將其與最終的可執行文件鏈接起來。

我也試過wxFrame :: SetIcon,它也沒有工作。

設置窗口圖標有一個竅門嗎?我已經看到了一些涉及Windows API的方法,但如果不需要,我寧願不去那裏。我認爲它應該在您將其放入資源文件時自動顯示。

回答

2

此行添加到您的資源文件:

frame_icon ICON "images/icon-win.ico" 

此行添加到您的框架構造

SetIcon(wxICON(frame_icon)); 
+0

嗯,我不知道爲什麼使用數字作爲標識符不會做任何事情,但這工作。謝謝! – parkovski

+0

C++標識符必須以字母開頭。 http://www.cplusplus.com/doc/tutorial/variables/ – ravenspoint

+0

當我使用一個數字時,它編譯得很好,它只是沒有做任何事情。事實證明,它實際上並沒有使用標識符。我在wx頭文件中找到了這個: '#define wxICON(X)wxIcon(wxT(#X))' 所以我想當它的ID是數字1時,它正在尋找一個名爲「1」的資源。 – parkovski

0

正如您發現將圖標放在資源文件中意味着它顯示在任務欄上並顯示爲可執行圖標。將其設置爲你需要做下面的框圖標:

frame->SetIcon(wxICON(1)); 
1

試試這個

frame->SetIcon(wxIcon(wxT("icon.ico"), wxBITMAP_TYPE_ICO));

+0

你能解釋這是什麼? –

+0

@AaronHall - >你可以在你的wxFrame的窗口左上角設置圖標,而不使用任何資源文件。 frame_object_name->SetIcon(wxIcon(wxT("contents/myicon.ico"), wxBITMAP_TYPE_ICO)); 這是這個問題的替代解決方案。如果有人不想使用資源文件,那麼這是解決方案的一行 –

+0

我正在審查答案,並且單行標籤有時會被標記,我沒有標記它,但是我想你應該編輯你的答案包含你的解釋。 –