Amiguinho,
Explique melhor como voce deseja inserir uma imagem, ou seja, qual a intenção da imagem que será inclusa?
Mesmo porque dependendo de qual a sua necessidade poderemos incluir uma imagem em uma janela, em uma janela filha(Child), em um diálogo, etc.
TestBMP.prgNeste primeiro exemplo uma janela
pai ativa, através de um menu, um diálogo, que tem seu desenho posicionado por arquivos de recursos( .RC ).
Um comando redefine o objeto
bitmap contido no recurso posicionando-o e através de um método(comando interno de uma classe) da classe
bitmap, chamado
SetBMP(), executa a ação de fixar o nome da imagem para ser exibida.
O botões posicionados no diálogo fazem as ações de re-fixar o nome de imagem e apresentá-la.
// Images DataBase sample in FiveWin from resources
// This code is fully compatible with FiveWin, FiveWin++ and FiveWin for Harbour
#include "FiveWin.ch"
static oWnd
//----------------------------------------------------------------------------//
function Main()
#ifndef __CLIPPER__
SET RESOURCES TO "Fishes32.dll" // 32 bits DLL version
#else
SET RESOURCES TO "Fishes16.dll" // 16 bits DLL version for Clipper users
#endif
DEFINE WINDOW oWnd FROM 1, 1 TO 22, 75 ;
TITLE "Bitmap Test" MENU BuildMenu()
SET MESSAGE OF oWnd TO "FiveWin - Fishes Database!"
ACTIVATE WINDOW oWnd
return nil
//----------------------------------------------------------------------------//
function BuildMenu()
local oMenu
MENU oMenu
MENUITEM "Dialog Box"
MENU
MENUITEM "&Activate..." ACTION DlgFish() ;
MESSAGE "Show the images"
SEPARATOR
MENUITEM "&End..." ACTION oWnd:End() ;
MESSAGE "Thats all folks!"
ENDMENU
oMenu:AddHelp( "FiveWin", "FiveTech" )
ENDMENU
return oMenu
//----------------------------------------------------------------------------//
function DlgFish()
local oDlg
local n := 1
local bmpFish
DEFINE DIALOG oDlg RESOURCE "Fish"
REDEFINE BITMAP bmpFish ID 110 OF oDlg NAME "Fish1"
bmpFish:bLDblClick = { | nRow, nCol, nFlags | ;
MsgInfo( "DblClick on the bitmap" ) }
REDEFINE BUTTON ID 120 OF oDlg ;
ACTION If( n > 1, bmpFish:SetBMP( "Fish" + AllTrim( Str( --n ) ) ), ;
Tone( 956, 2 ) )
REDEFINE BUTTON ID 130 OF oDlg ;
ACTION If( n < 6, bmpFish:SetBMP( "Fish" + AllTrim( Str( ++n ) ) ), ;
Tone( 956, 2 ) )
ACTIVATE DIALOG oDlg CENTERED
return nil
TestBMP3Neste exemplo, em uma janela
pai um comando posiciona diretamente em sua área uma imagem.
Os métodos
ON PAINT e
ON RESIZE refazem os ajustes de posicionamento e apresentação caso a janela seja movida(on paint) ou redimensionada(on resize).
#include "FiveWin.ch"
STATIC oWnd, oBmp
FUNCTION Main()
DEFINE WINDOW oWnd FROM 0,0 TO 10,20 TITLE "Test Class TBitmap"
@ 0,0 BITMAP oBmp FILENAME "..\bitmaps\Tutanka1.bmp" OF oWnd ;
SIZE 0,0 PIXEL SCROLL
WndCenter(oWnd:hWnd)
ACTIVATE WINDOW oWnd ;
ON PAINT ( oBmp:aDjClient(), oBmp:ScrollAdjust() ) ;
ON RESIZE ( oBmp:aDjClient(), oBmp:ScrollAdjust() )
RETURN ( nil )
TestBMP4Neste exemplo, em uma janela
pai, um comando define na posição 1,1(pixel) de sua área interna, a posição de uma imagem.
A propriedade
bPainted da classe bitmap recebe um valor, que neste caso é um bloco de código( codeblock ) que será executado, produzindo os efeitos de
ir para trás na imagem, definindo a cor do texto e imprimindo o texto.
Veja que existem 3 ações sendo executadas, SetBkMode(), SetTextColor() e TextOut() dentro do codeblock. Já que qualquer conteúdo entre {|| e } será considerado comando a ser executado.
#include "FiveWin.ch"
FUNC main()
local oWnd, oBmp
DEFINE WINDOW oWnd TITLE "Text on a bitmap"
@ 1, 1 BITMAP oBmp FILENAME "..\bitmaps\magic.bmp" OF oWnd
oBmp:bPainted = { || SetBkMode( oBmp:hDC, 1 ),;
SetTextColor( oBmp:hDC, CLR_YELLOW ),;
TextOut( oBmp:hDC, 5, 5, "Hello" ) }
ACTIVATE WINDOW oWnd
RETURN NIL
Este exemplos estão na pasta
SAMPLES e as classes estão na pasta
CLASSES.