2016-04-01 67 views
-1

我正在使用openFrameworks的應用程序。據我所知,你只能從openFrameworks打開一個openGL窗口,而且這個窗口不會使用我想要的icon.ico。它通過和控制檯窗口顯示在.exe文件中。我的自定義圖標不顯示在opengl

有幾件事情我想:

  1. 控制檯窗口中正確顯示的圖標。它在icon.rc中設置爲主圖標。我想可能是先打開控制檯窗口,然後分配圖標,當另一個窗口打開時,它不再分配我的圖標。所以我試圖擺脫控制檯窗口(我不會需要它釋放),我改變了子系統從控制檯到Windows。並且將main()更改爲WINAPI WinMain(....等等。但是這並不能解決我的圖標問題,它仍然沒有顯示。
  2. 試圖改變resource.h和icon.rc中的一些東西,但是沒有太多的改變,似乎沒有什麼工作。
  3. 試圖尋找從了openFrameworks的OpenGL窗口設置功能,但你只能改變屏幕大小和其他一些基本的東西。

任何想法,爲什麼這個畫面不是顯示我的圖標?

在此先感謝!

enter image description here

+1

窗口圖標是無關的在資源管理器中顯示的應用程序圖標。這也與OpenGL無關。 –

+1

顯示你的'WinMain'函數和/或'WM_CREATE'開關。應該有類別註冊的地方,這是你設置'WNDCLASSEX :: hIcon'的地方。如果這是不可訪問的,找到'HWND'窗口句柄,併發送'WM_SETICON'消息 –

+0

謝謝你們,我設法解決它,我會張貼另一個答案我是如何做到這一點,因爲在這個迷你markdown代碼看起來不漂亮: ) –

回答

1

所以我解決了這個問題,感謝:上校三十二和巴馬克Shemirani!除了使用ofGetWin32Window的()你或許可以使用類似的GET窗口的功能,如果不工作了openFrameworks :)

#include "ofMain.h" 
#include "ofApp.h" 
#include "../resource.h" 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { 

    ofSetupOpenGL(1280, 720,OF_WINDOW); 

    HWND hwnd = ofGetWin32Window(); 
    HICON hMyIcon = LoadIcon(hInstance, MAKEINTRESOURCE(MAIN_ICON)); 
    SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)hMyIcon); 

    ofRunApp(new ofApp()); 

}