Я работаю над программой Windows, целью которой является отображение кнопок изображений с использованием GDIPlus и заголовочного файла Windows.C++ Проблемы с доступом к массиву CAutoPtr
Изображения прикреплены к глобальному массиву CAutoPtr. Внутри обратного вызова кнопки я обрабатываю сообщение WM_PAINT, ища массив изображений (imageList) с помощью идентификатора кнопки (GetDlgCtrlID (hWnd)).
Я могу рисовать первым изображением в 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 удерживает другие изображения; Я просто не могу их отобразить.
imageList[1].Attach(new Gdiplus::Bitmap(L"TestImage.png"));