![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Помогите не получается вставить картинку из ресурса.
Код:
function MessageMainProcess(Handle: HWND; Msg: UINT; WParam: Integer; LParam: Integer): Integer;stdcall; begin Result:=0; case msg of WM_CREATE: begin { ...} end; WM_PAINT: begin bmp:= LoadGIFRes(hInstance, 'button_next', 'GIF');//Загрузка *.RES SelectObject(hdcMem, bmp); BitBlt(a, 0, 0, 100, 100, hdcMem, 100, 100, SRCCOPY); end; WM_DESTROY: begin PostQuitMessage(0); Exit; end; end; Result:=DefWindowProc(Handle,Msg,WParam,LParam); end; |
#2
|
||||
|
||||
![]() Загрузку файла лучше делать в сообщении WM_CREATE.
Чтобы сказать почему не отрисовывается, нужно видеть часть кода. Откуда взялась переменная а, обычно это ps.hdc, как получена hdcMem? Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() Цитата:
надо попробывать, да и самому интересно переменные чем их обозвать, скажу честно что код выдрал из интернета, так как раньше не задовался этим вопросом, и по-этому не знаю. Может как раз вы госспода поможете разобраться. |
#4
|
||||
|
||||
![]() Поможем, если более полный код будет. В частности указанные переменные интересуют.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
|||
|
|||
![]() переменные
Код:
var hdcMem,a: THandle; bmp: hBitmap; |
#6
|
||||
|
||||
![]() Так не пойдёт. Прежде чем использовать эти переменные их нужно инициализировать. Вот этот кусок кода интересует. Кстати, переменная a, не может быть типа THandle.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
|||
|
|||
![]() delete ....
Последний раз редактировалось HTTqp, 19.01.2015 в 15:16. |
#8
|
|||
|
|||
![]() Цитата:
вот как выглядил код изначально когда я его взял Код:
bb:=LoadBitmap(HInstance, 'D:\imgs\Новая папка (2)\image.bmp'); //bb -> HBITMAP a:=GetDC(Mwindow); //Mwindow -> CreateWindowEx SelectObject(hdcMem, bb); BitBlt(a, 0, 0, 100, 100, hdcMem, 100, 100, SRCCOPY); //a; hdcmem -> HDC |
#9
|
||||
|
||||
![]() Начнём:
Код:
var dc, memdc : HDC; bmp, oldbmp : HBITMAP; ... function MessageMainProcess(Wnd : HWND; Msg : UINT; wParam, lParam : Integer) : Integer; stdcall; var ps : PAINTSTRUCT; begin case Msg of WM_CREATE : begin dc := GetDC(0); memdc := CreateCompatibleDC(dc); bmp := LoadGIFRes(hInstance, 'button_next', 'GIF');//Загрузка *.RES oldbmp := SelectObject(memdc, bmp); end; WM_PAINT : begin BeginPaint(Wnd, ps); BitBlt(ps.hdc, 0, 0, 100, 100, memdc, 0, 0, SRCCOPY); EndPaint(Wnd, ps); end; WM_DESTROY : begin DeleteObject(SelectObject(memdc, oldbmp)); DeleteDC(memdc); ReleaseDC(0, dc); PostQuitMessage(0); Exit; end; end; Result := DefWindowProc(Wnd, Msg, wParam, lParam); end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
|||
|
|||
![]() Большое, спасибо. Наверное тему не стоит удалять. Думаю не только мне будет наглядным примером)
|
#11
|
|||
|
|||
![]() а подскажите еще как отловить нажатие на вставленную картинку
Код:
WM_COMMAND: begin case loWord(wParam) of {не знаю что здесь написать}: messageBox(Handle,'Сообщение','Имя константы',mb_ok); end; |
#12
|
||||
|
||||
![]() Отлов будет производится не при нажатии на картинку, а при нажатии на окно на котором оная картинка отрисована.
Код:
case Msg of ... WM_LBUTTONDOWN : ... end; Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |