私は昔ながらのWin32アプリケーションを生成し、すべてのリソースを剥奪し、私のアプリケーションは、このから構成されるようにコードを生成:タスクバーアイコンを明示的に設定する方法は? Visual Studioで
#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またはそのような場所にフォームを見えないようにしてください。 –