• XSS.stack #1 – первый литературный журнал от юзеров форума

Поставить картинку на форму WinApi

shyrka

RAID-массив
Забанен
Регистрация
30.03.2011
Сообщения
50
Реакции
0
Пожалуйста, обратите внимание, что пользователь заблокирован
У кого есть какие соображения ... а то уже 2 дня парюсь .. и все в тупую..
Если юзать ЦРТ то все кашырно ... а так не получается ..
жду помощи , может есть у кого то наработки или проектик мини :)

Спасибо на перед!!
 
вот тебе, рабочий кодес, выдран из процедуры окна.
Код:
@wm_paint:
	invoke BeginPaint,wnd,addr ps
	invoke CreateCompatibleDC,ps.hdc
	mov hdc_inv,eax
	invoke LoadBitmap,hinst,1
	invoke SelectObject,hdc_inv,eax
  mov bf.BlendOp,0
  mov bf.BlendFlags,0
  mov bf.SourceConstantAlpha,0FFh
  mov bf.AlphaFormat,AC_SRC_ALPHA
  lea eax,bf
	invoke AlphaBlend,ps.hdc,0,10,96,96,hdc_inv,0,0,48,48,eax
	invoke DeleteDC,hdc_inv
	
	invoke EndPaint,wnd,addr ps
	mov eax,TRUE
	ret
 
Пожалуйста, обратите внимание, что пользователь заблокирован
тут я так понял бмп картинка, и + на асм написано , ну все равно огромное спасибо!!
 
Когда кому-нибудь может понадобиться, тебя уже может не быть тут... Выложи, и пусть лежит, кому надо посмотрят... на то это и форум.
 
юзай ф-ции Gdi+

рабочий пруф для картинки 800х600:
Код:
; SetFormImage - помещение картинки из памяти по хендлу на окно (Jpg, Gif, Png, Bmp)
;	IN:	hWindow - хендл окна
;  lpImage - указатель на изображение
;  dwImgX  - начальная X координатa
;  dwImgY  - начальная Y координатa
;	OUT:	возвращает 1 в случае успеха, иначе 0
SetFormImage proc uses ebx hWindow, lpImage, dwImgX, dwImgY : DWORD
  LOCAL	hgpToken  : DWORD
  LOCAL	hBitmap   : DWORD
  LOCAL	hGraphics : DWORD
  LOCAL	lpIStream : DWORD
  LOCAL	gpSInput  : GdiplusStartupInput
  
  xor	ebx, ebx

  lea	eax, gpSInput
  zero_mem eax, sizeof GdiplusStartupInput
  inc	gpSInput.GdiplusVersion
  
  lea	eax, gpSInput
  lea	ecx, hgpToken
  invoke	GdiplusStartup, ecx, eax, 0
  .IF	!eax
  	lea	eax, lpIStream
  	xinvoke	CreateStreamOnHGlobal, lpImage, 0, eax
  	lea	eax, hBitmap
  	xinvoke	GdipCreateBitmapFromStream, lpIStream, eax
  	lea	eax, hGraphics
  	xinvoke	GdipCreateFromHWND, hWindow, eax
  	xinvoke	GdipDrawImageRectRectI, hGraphics, hBitmap, dwImgX, dwImgY, 800, 600, 0, 0, 800, 600, 2, 0, 0, 0
  	xinvoke	ValidateRect, hWindow, 0
  	.IF	eax
    inc	ebx
  	.ENDIF
  .ENDIF
  xchg	eax, ebx
  ret
SetFormImage endp

для других размеров картинки передать нужные в GdipDrawImageRectRectI
юзать в событии WM_PAINT

ps: наздоровье) мир! :punk:
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх