Visual Studio에서 평범한 오래된 Win32 응용 프로그램을 생성하고 응용 프로그램이 다음과 같이 구성되도록 모든 리소스와 생성 된 코드를 제거했습니다.명시 적으로 작업 표시 줄 아이콘을 설정하는 방법?
#include "stdafx.h"
#include "IcoTest.h"
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
::MessageBox(NULL, L"Testing", L"Test", MB_OK);
}
응용 프로그램을 실행하면 이것이 표시됩니다.
screenshot http://i43.tinypic.com/a0c68m.png
그럼 문제는 기본 응용 프로그램 아이콘을 작업 표시 줄에서 변경할 수 있습니까? 그렇다면 어떤 코드를 추가해야합니까?
편집 :
내가 한 일은 다음과 같습니다. 이런 종류의 작동은 이상적이지 않습니다. 새 아이콘이 제대로 표시되지만 Vista의 작업 표시 줄 미리보기 창은 작동하지 않으며 시스템 메뉴가 작동하지 않으므로 지금은 그냥두고갑니다.
HWND CreateDummyWindow(HINSTANCE hInstance, int iconId, LPCTSTR taskbarTitle)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = DefWindowProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(iconId));
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = 0;
wcex.lpszMenuName = 0;
wcex.lpszClassName = taskbarTitle,
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(iconId));
ATOM atom = RegisterClassEx(&wcex);
HWND wnd = ::CreateWindow(
wcex.lpszClassName, taskbarTitle, WS_ICONIC | WS_DISABLED,
-1000, -1000, 1, 1, NULL, NULL, hInstance, NULL);
return wnd;
}
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
HWND wnd = CreateDummyWindow(hInstance, IDI_ICON1, _T("Test"));
::MessageBox(wnd, _T("Testing"), _T("Test"), MB_OK);
::DestroyWindow(wnd);
}
보이지 않는 창을 사용할 수 있습니까? – Skrymsli
테스트를 거쳐야합니다. 메시지 펌프가 주 스레드에있는 한 의심 할 여지가 있습니다. 단지 -10000, -10000 또는 이와 비슷한 위치에 양식을 보이지 않게하십시오. –