【问题标题】:My custom icon not showing in opengl我的自定义图标未在 opengl 中显示
【发布时间】:2016-04-01 16:10:27
【问题描述】:

我正在使用 openFrameworks 开发一个应用程序。据我所知,您只能从 openFrameworks 打开一个 openGL 窗口,并且不知何故此窗口不使用我想要的 icon.ico。它显示在 .exe 文件和控制台窗口中。

我尝试了几件事:

  1. 控制台窗口正确显示图标。它在 icon.rc 中设置为主图标。我想也许首先打开控制台窗口,所以分配了图标,当另一个窗口打开时,它不再分配我的图标。所以我试图摆脱控制台窗口(无论如何我都不需要它来发布)并且我将子系统从控制台更改为窗口。并将 main() 更改为 WINAPI WinMain(.... 等。但这并不能解决我的图标问题,它仍然没有显示。
  2. 尝试更改 resource.h 和 icon.rc 中的一些内容,但没有太多可更改的内容,而且似乎没有任何效果。
  3. 尝试从 openFrameworks 在 openGL 窗口设置中搜索功能,但您只能更改屏幕大小和其他一些基本内容。

知道为什么这个屏幕没有显示我的图标吗?

提前致谢!

【问题讨论】:

  • 窗口图标与资源管理器中显示的应用程序图标无关。它也与OpenGL无关。
  • 显示您的WinMain 函数和/或WM_CREATE 开关。某处应该有课程注册,那是你设置WNDCLASSEX::hIcon的地方。如果无法访问,请找到 HWND 窗口句柄并发送 WM_SETICON 消息
  • 谢谢大家,我设法修复了它,我将发布另一个答案,因为这个 mini-markdown 中的代码看起来不漂亮:)

标签: c++ windows icons openframeworks


【解决方案1】:

感谢三十二上校和巴尔马克·谢米拉尼,我把它修好了!!而不是使用 ofGetWin32Window() 如果不使用 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());

}

【讨论】:

    猜你喜欢
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    相关资源
    最近更新 更多