1

2 つのアイコン (.ico ファイル) があります。大きな 32x32 と別の小さな 16x16。

ここに画像の説明を入力

私はhIcon自分WNDCLASSEXのを大きなものに、そしてhIconSm小さなものに設定しようとしています。しかし、私は一生、それを行う方法を理解することはできません! 私が最初に試したLoadIcon

wndclass.hIcon = LoadIcon(instance, MAKEINTRESOURCE(IDI_SKELETON));
wndclass.hIconSm = LoadIcon(instance, MAKEINTRESOURCE(IDI_SKELETON_SM));

トップウィンドウバーとタスクバーの両方に常に同じアイコンをロードします。と同じことLoadImage

ここに画像の説明を入力

すべてのコードは次のとおりです。

Resource.h

#define IDI_SKELETON 1000
#define IDI_SKELETON_SM 1001

Skeleton.rc

#include "Resource.h"

IDI_SKELETON       ICON "Skeleton.ico"
IDI_SKELETON_SM    ICON "Skeleton_sm.ico"

WinMain.cpp

#include <windows.h>
#include "Resource.h"

LRESULT CALLBACK
HandleEvent(HWND   window,
            UINT   message,
            WPARAM wparam,
            LPARAM lparam)
{
    switch(message)
    {
        case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC dc;
            RECT rect;

            dc = BeginPaint(window, &ps);
            GetClientRect(window, &rect);
            DrawText(dc, TEXT("This is a test window"), -1, &rect,
                         DT_SINGLELINE | DT_CENTER | DT_VCENTER);
            EndPaint(window, &ps);
        }
        break;

        case WM_CLOSE:
        {
            PostQuitMessage(0);
            return 0;
        }
        break;
    }
    return DefWindowProc(window, message, wparam, lparam);
}

int CALLBACK
WinMain(HINSTANCE instance,
        HINSTANCE previous,
        LPSTR     cmd,
        int       cmdshow)
{
    WNDCLASSEX wndclass;
    TCHAR classname[] = TEXT("24HoursClass");

    wndclass.cbSize = sizeof(wndclass);
    wndclass.style = CS_VREDRAW | CS_HREDRAW;
    wndclass.lpfnWndProc = HandleEvent;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hInstance = instance;
    wndclass.hIcon = (HICON)LoadImage(instance, MAKEINTRESOURCE(IDI_SKELETON), IMAGE_ICON,
             GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON), 0);
    wndclass.hIconSm = (HICON)LoadImage(instance, MAKEINTRESOURCE(IDI_SKELETON_SM), IMAGE_ICON,
             GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0);
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wndclass.lpszMenuName = 0;
    wndclass.lpszClassName = classname;

    RegisterClassEx(&wndclass);

    HWND window = CreateWindowA(classname, "24 Hours",
            WS_OVERLAPPEDWINDOW | WS_VISIBLE,
            CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
            0, 0, instance, 0);

    MSG msg;

    while(GetMessage(&msg, window, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;
}

私は何が欠けていますか?

どんな助けでも大歓迎です!

4

0 に答える 0