WinAPIでカスタムアイコンにする:フルソースコード

本物のページはこちら→custom-icon:code

Included page "winapi:custom-icon:code" does not exist (create it now)

main.cpp

#include <windows.h>
#include "resource.h"
// ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
    switch( msg )
    {
    case WM_DESTROY:
        PostQuitMessage( 0 );
        return 0;
    }
 
    return DefWindowProc( hWnd, msg, wp, lp );
}
// ウィンドウを作成する
HWND Create(HINSTANCE hInst)
{
    WNDCLASSEX wc;
 
    // ウィンドウクラスの情報を設定
    wc.cbSize = sizeof(wc);               // 構造体サイズ
    wc.style = CS_HREDRAW | CS_VREDRAW;   // スタイル
    wc.lpfnWndProc = WndProc;             // ウィンドウプロシージャ
    wc.cbClsExtra = 0;                    // 拡張情報1
    wc.cbWndExtra = 0;                    // 拡張情報2
    wc.hInstance = hInst;                 // インスタンスハンドル
    wc.hIcon = (HICON)LoadImage(          // アイコン
        hInst,"IDC_SORA", IMAGE_ICON,
        0, 0,  LR_SHARED 
    );
    wc.hIconSm = wc.hIcon;                // 子アイコン
    wc.hCursor = (HCURSOR)LoadImage(      // マウスカーソル
        NULL, MAKEINTRESOURCE(IDC_ARROW), IMAGE_CURSOR,
        0, 0, LR_DEFAULTSIZE | LR_SHARED
    );
    wc.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH          ); // ウィンドウ背景
    wc.lpszMenuName = NULL;                     // メニュー名
    wc.lpszClassName = "Default Class Name";// ウィンドウクラス名
 
    // ウィンドウクラスを登録する
    if( RegisterClassEx( &wc ) == 0 ){ return NULL; }
 
    // ウィンドウを作成する
    return CreateWindow(
        wc.lpszClassName,      // ウィンドウクラス名
        "Miffy Sora",  // タイトルバーに表示する文字列
        WS_OVERLAPPEDWINDOW,   // ウィンドウの種類
        CW_USEDEFAULT,         // ウィンドウを表示する位置(X座標)
        CW_USEDEFAULT,         // ウィンドウを表示する位置(Y座標)
        CW_USEDEFAULT,         // ウィンドウの幅
        CW_USEDEFAULT,         // ウィンドウの高さ
        NULL,                  // 親ウィンドウのウィンドウハンドル
        NULL,                  // メニューハンドル
        hInst,                 // インスタンスハンドル
        NULL                   // その他の作成データ
    );
}
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char* pCmdLine, int showCmd)
{
    // ウィンドウを作成する
    HWND hWnd = Create( hInst );
    // ウィンドウを表示する
    ShowWindow( hWnd, SW_SHOW );
 
    MSG msg;
    // メッセージループ
    while(GetMessage( &msg, NULL, 0, 0 ))
    {
            // メッセージを処理する
            TranslateMessage( &msg );
            DispatchMessage( &msg );
 
    }
 
    return 0;
}

resource.h

#define IDC_SORA 101

.rcファイル

IDC_SORA ICON "sora-draw.ico"

サポートサイト Wikidot.com