Windows APIを使用してイメージを追加する方法
ウィンドウに画像を追加する Windows API を使用するには、次の手順を実行します。
まず、windows.hヘッダファイルが含まれているか確認してください。このヘッダファイルには、ウィンドウを作成および管理するために使用される多数の関数と定数が含まれています。
ウィンドウを作成する。CreateWindowEx 関数を使ってウィンドウを作成し、ウィンドウクラス、タイトル、スタイルなどを指定する。
3. デバイスコンテキスト取得:GetDC 関数を使用して、ウインドウのデバイスコンテキストを取得します。このコンテキストはウインドウに関連付けられ、ウインドウ上に描画を行うことを可能にします。
4. 画像の読み込みロード画像関数のローディメージで画像リソースを読み込む。ファイル名かリソースIDを指定して画像を読み込むことができる。
5. 画像の描画をするときは、BitBlt関数を使用して画像をウィンドウのデバイス・コンテキストに描画します。その際、複数の引数で描画方法を指定するのとともに、ソースとターゲットの矩形を提供する必要があります。
以下に、Windows APIを使用して、ウィンドウに画像を追加する方法を示す、簡単なサンプルコードを示します。
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// 注册窗口类
WNDCLASS wc = {0};
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszClassName = L”ImageWindowClass”;
RegisterClass(&wc);
// 创建窗口
HWND hwnd = CreateWindowEx(0, L”ImageWindowClass”, L”Image Window”, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hInstance, NULL);
// 获取设备上下文
HDC hdc = GetDC(hwnd);
// 加载图片
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, L”path_to_image.bmp”, IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE);
// 绘制图片
RECT rect;
GetClientRect(hwnd, &rect);
HDC memDC = CreateCompatibleDC(hdc);
SelectObject(memDC, hBitmap);
BitBlt(hdc, 0, 0, rect.right, rect.bottom, memDC, 0, 0, SRCCOPY);
// 释放资源
DeleteDC(memDC);
DeleteObject(hBitmap);
ReleaseDC(hwnd, hdc);
// 显示窗口
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
// 消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
上記の例では、ウィンドウを作成後にデバイスコンテキストを取得し、ビットマップ画像を読み込んでウィンドウのデバイスコンテキストに描画しています。path_to_image.bmpは、ロードする画像のパスに置き換えてください。ウィンドウのサイズや位置は必要に応じて調整できます。