从WNDCLASS切换到WNDCLASSEX后,标题栏中没有图标

时间:2010-12-16 04:20:12

标签: c++ windows winapi

我刚刚将游戏切换为使用WNDCLASSEX,因此我可以更改hIconSm,但由于某种原因,标题栏中不再有图标。任务栏上的光标和图标以及EXE的图标都可以正常工作。这是窗口创建代码的主要部分:

 WNDCLASSEX wc;

 wc.cbSize = sizeof(WNDCLASSEX);
 wc.cbClsExtra = 0;
 wc.cbWndExtra = 0;
 wc.style = CS_HREDRAW | CS_VREDRAW;
 wc.lpfnWndProc = WinProc;
 wc.hInstance = hInstance;
 wc.hIcon = LoadIcon(NULL, IDI_ERROR);
 wc.hIconSm = LoadIcon(NULL, IDI_ASTERISK);
 wc.hCursor = LoadCursorFromFile((LPCSTR)"FierceCursor.cur");
 wc.hbrBackground = (HBRUSH) (COLOR_WINDOW+1);
 wc.lpszClassName = "FierceWindow";

 RegisterClassEx(&wc);

 game->hinstance = hInstance;

 hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,
                          "FierceWindow", "Fierce",
                          WS_OVERLAPPED, 400, 100,
                          game->SCREEN_WIDTH, game->SCREEN_HEIGHT,
                          NULL, NULL, hInstance, NULL);

我已经为CreateWindowEx尝试了一些不同的设置,希望我可能使用没有图标的样式,但没有运气。我现在正在使用默认图标进行测试。

2 个答案:

答案 0 :(得分:0)

不会编译:

error: cast from 'CHAR*' to 'WORD' loses precision

感谢编辑btw。

编辑 - 通过将其更改为:

来编译
    wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(32513));
wc.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(32513));

答案 1 :(得分:0)

这是因为你的窗户风格。仅当您添加WS_SYSMENU样式时才会显示该图标。

  

WS_OVERLAPPED | WS_SYSMENU