我已经使用VS2010创建了一个自定义.ico用于我使用DirectX制作的游戏
当我将.ico文件设置为我的wndClass的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 );
答案 0 :(得分:3)
您必须在对LoadIcon的调用中指定实例句柄,以便它知道要使用哪个模块的资源。 标准图标需要一个NULL实例,这就是它们适合你的原因。