Loadimage - не работает.
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
HBITMAP hBmp;
//HDC hdcMem = CreateCompatibleDC(hdc);
HDC hdcMem;
switch (message)
{
case WM_CREATE:
hBmp = (HBITMAP)LoadImage(NULL, L"1.bmp", IMAGE_BITMAP, 500, 500, LR_LOADFROMFILE);
break;
.......
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
hdcMem = CreateCompatibleDC(hdc);
SelectObject(hdcMem, hBmp);
BitBlt(hdc,0,0,500,500, hdcMem, 0, 0, SRCCOPY);
EndPaint(hWnd, &ps);
break;
При компиляции появляется окно с ошибкой:
Debug Error
Run-Time Check Failure #3 The variable 'hBmp' is being used without being defined
и кнопки прервать, повторить, отмена, помогите разобраться в чем ошибка начинающему...
Основная задача загрузить рисунок.
hBmp = (HBITMAP)LoadImage(NULL, L"1.bmp", IMAGE_BITMAP, 500, 500, LR_LOADFROMFILE);
нужно было поставить в WN_PAINT
топик можно закрыть)
Ошибка компиляции возникает из-за того, что компилятор не может быть уверен, что переменная hBmp инициализирована.
Если возможно, просто сделай эту переменную глобальной.
Код:
static HBITMAP hBmp=NULL;
спасет революцию.
Код:
HBITMAP bmp = (HBITMAP)LoadImage(NULL,TEXT("d:\image.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
SIZE sz;
GetBitmapDimensionEx(bmp,&sz); // sz.cx=0; sz.cy=0;
HDC dc = CreateCompatibleDC(NULL);
SelectObject(dc,bmp);
SIZE sz;
GetBitmapDimensionEx(bmp,&sz); // sz.cx=0; sz.cy=0;
HDC dc = CreateCompatibleDC(NULL);
SelectObject(dc,bmp);
Почему возвращаются нулевые размеры битмапки, хотя LoadImage грузит нормально (bmp!=0) ?
Цитата:
The retrieved dimensions must have been set by the SetBitmapDimensionEx function
Цитата:
The function returns a data structure that contains fields for the height and width of the bitmap, in .01-mm units. If those dimensions have not yet been set, the structure that is returned will have zeroes in those fields
Эти размеры задаются в мм и исключительно для использования поддерживаемыми приложениями, а общем случае не используются
благодарям за вразумление!
Можете репутации добавить.. :rolleyes: