私は、GDIPlusとWindowsヘッダーファイルを使用して画像ボタンを表示することを目標とするWindowsプログラムを作成しています。C++ CAutoPtrアレイにアクセスする際のトラブル
イメージは、グローバルCAutoPtrアレイに添付されています。ボタンのコールバックの中で、ボタンの識別子(GetDlgCtrlID(hWnd))を使用してイメージ配列(imageList)を検索することによってWM_PAINTメッセージを処理します。
imageListの最初の画像でペイントできますが、imageList [2]で次のボタンをペイントしようとすると画像が表示されません。
問題はどこにありますか。なぜimageListの最初のスロットに画像が表示されないのですか?
ありがとうございました!
これは、すべてのボタンメッセージを処理します。
CAutoPtr<Gdiplus::Image> typedef GdiplusImagePtr;
GdiplusImagePtr imageList[50];
Rect imagePositions[50];
LRESULT CALLBACK CustomButtonProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch (msg) {
case WM_CREATE:
{
// Same as WM_PAINT
break;
}
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC newDC = BeginPaint(hWnd, &ps);
Gdiplus::Graphics newGraphics(hWnd);
newGraphics.DrawImage(imageList[GetDlgCtrlID(hWnd)], imagePositions[GetDlgCtrlID(hWnd)]);
EndPaint(hWnd, &ps);
ReleaseDC(hWnd, GetDC(hWnd));
DeleteDC(newDC);
break;
}
return CallWindowProc(customButtonProc, hWnd, msg, wp, lp);
}
このコード行を使用して、imageListに画像を添付します。 imageListは他の画像を保持していることを確認しました。私はそれらを表示できません。あなたが別のpalceに一つの場所でGdiplus::Image
とGdiplus::Bitmap
を使用することはできません
imageList[1].Attach(new Gdiplus::Bitmap(L"TestImage.png"));