Windows编程:WNDCLASS结构:hIcon成员问题

Windows Programming: WNDCLASS structure: hIcon member Problem

本文关键字:hIcon 成员问题 结构 WNDCLASS 编程 Windows      更新时间:2023-10-16

我用VS2010为我用DirectX制作的游戏创建了一个自定义的。ico

当我将。ico文件设置为我的windclass的hIcon成员时,它将显示在任务栏中,但不会显示在标题栏中。

我读了关于这个的其他线程,我搜索了谷歌,msdn:没有运气…我试了所有我能想到的方法,它还是不显示。

奇怪的是:当我将hIcon切换为默认图标(如IDI_ERROR)时,它将显示在任务栏和标题栏中,但不显示我自定义的。ico

有人能帮我吗?

下面是我的代码:
HICON Icon = LoadIcon( NULL, MAKEINTRESOURCE(ID_ICON_MYTETRIS) );
WNDCLASS wndClass;
ZeroMemory(&wndClass,sizeof(wndClass));
wndClass.style = CS_HREDRAW | CS_VREDRAW;
wndClass.lpfnWndProc = WndProc;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = hInstance;
wndClass.hCursor = LoadCursor( NULL, IDC_ARROW );
wndClass.hIcon =  Icon;
wndClass.hbrBackground = static_cast<HBRUSH>(GetStockObject(WHITE_BRUSH));
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = _T("WindowClass0");
if (RegisterClass(&wndClass) == false) {
    return -1;
}
RECT rc = {0,0,300,225};
AdjustWindowRect(&rc, WS_OVERLAPPEDWINDOW, FALSE);
HWND hWnd = CreateWindow(_T("WindowClass0")
            ,_T("2D_DirectX_Tetris")
            ,WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX
            ,CW_USEDEFAULT
            ,CW_USEDEFAULT
            ,rc.right - rc.left
            ,rc.bottom - rc.top
            ,NULL
            ,NULL
            ,hInstance
            ,NULL );
if( hWnd == false) {
    return -1;
}
ShowWindow( hWnd, iCmdShow );

你必须在调用LoadIcon时指定一个实例句柄,以便它知道要使用哪个模块的资源。标准图标要求为NULL实例,这就是为什么它们为您工作。