I can't find a easy solution, I read on graphics, gdi, gdi+, directX, TB_gdiplus.
This example is produce by imagex and realy not (working at all) by the limit
of the RESOURCE.PBR...... imagine over 7,000 image and I'm not sure if
all image in the( file.rc ) to (file.pbr) is not loading in memory.
(Yes I download GDImage demo look nice but is to complex for my first translate
basic program from REALBASIC, the option create image is rely easy in the program)
MY QUESTION IT IS THE ONLY WAY TO USE WITH
GDIMAGE.
l-------------------------------------------------l
l l
l -------------- ------------ l
l l star.jpg l l l l
l l image.jpg l l SHOW l l
l l Moon.jpg l l IMAGE l l
l l Cloud.jpg l l l l
l l l l l l
l -------------- ------------- l
l l
l-------------------------------------------------l
sorry I have to learn how to insert image in this text but
I put in attach hopping It's working.
How to load image from disk (.gif, .jpg) in the hparent canevas.
The lisbox and the control to select no problem.
'------------------------------------------------------------------------------
' I use imagex to show what I want on final project
' but imagex not support notting else than icon and bmp plus it need to be in resource (xxxx.pbr)
' I want to use gif and jpg to load image in the hparent dialog when the program finish the select listbox
' must sent image file to the display.
'------------------------------------------------------------------------------
#COMPILE EXE
#DIM ALL
#RESOURCE "test.pbr"
#INCLUDE "WIN32API.INC"
%IDD_DIALOG1 = 101
%IDC_LISTBOX1 = 1001
%IDC_IMAGEX1 = 1002
%IDR_IMGFILE1 = 102
DECLARE CALLBACK FUNCTION ShowDIALOG1Proc()
DECLARE FUNCTION SampleListBox(BYVAL hDlg AS DWORD, BYVAL lID AS LONG, BYVAL _
lCount AS LONG) AS LONG
DECLARE FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
FUNCTION PBMAIN()
ShowDIALOG1 %HWND_DESKTOP
END FUNCTION
CALLBACK FUNCTION ShowDIALOG1Proc()
SELECT CASE AS LONG CBMSG
CASE %WM_INITDIALOG
' Initialization handler
CASE %WM_NCACTIVATE
STATIC hWndSaveFocus AS DWORD
IF ISFALSE CBWPARAM THEN
' Save control focus
hWndSaveFocus = GetFocus()
ELSEIF hWndSaveFocus THEN
' Restore control focus
SetFocus(hWndSaveFocus)
hWndSaveFocus = 0
END IF
CASE %WM_COMMAND
' Process control notifications
SELECT CASE AS LONG CBCTL
CASE %IDC_LISTBOX1
CASE %IDC_IMAGEX1
END SELECT
END SELECT
END FUNCTION
FUNCTION SampleListBox(BYVAL hDlg AS DWORD, BYVAL lID AS LONG, BYVAL lCount _
AS LONG) AS LONG
' for test only this come from SQLite3 inventory
LISTBOX ADD hDlg, lID, USING$("Test.jpg", 1)
LISTBOX ADD hDlg, lID, USING$("Star.jpg", 2)
LISTBOX ADD hDlg, lID, USING$("beauty.jpg", 3)
LISTBOX ADD hDlg, lID, USING$("Moon.gif", 4)
LISTBOX ADD hDlg, lID, USING$("Water.jpg", 5)
FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
LOCAL lRslt AS LONG
LOCAL hDlg AS DWORD
DIALOG NEW hParent, "Test read from disk to show image", 139, 145, 201, _
121, %WS_POPUP OR %WS_BORDER OR %WS_DLGFRAME OR %WS_SYSMENU OR _
%WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME OR %DS_3DLOOK OR _
%DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_CONTROLPARENT OR %WS_EX_LEFT _
OR %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR, TO hDlg
CONTROL ADD LISTBOX, hDlg, %IDC_LISTBOX1, , 15, 10, 60, 90
CONTROL ADD IMAGEX, hDlg, %IDC_IMAGEX1, "#" + FORMAT$(%IDR_IMGFILE1), _
115, 15, 65, 75
SampleListBox hDlg, %IDC_LISTBOX1, 30
DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt
FUNCTION = lRslt
END FUNCTION
In this forum you have two image controls and one graphic control available:
http://www.jose.it-berater.org/smfforum/index.php?board=117.0
The following example uses your own code and TB_IMGCTX.INC, available at:
http://www.jose.it-berater.org/smfforum/index.php?topic=85.0
#COMPILE EXE
#DIM ALL
'------------------------------------------------------------------------------
' ** Includes **
'------------------------------------------------------------------------------
#IF NOT %DEF(%WINAPI)
#INCLUDE "WIN32API.INC"
#ENDIF
'------------------------------------------------------------------------------
#INCLUDE "TB_IMGCTX.INC"
'------------------------------------------------------------------------------
' ** Constants **
'------------------------------------------------------------------------------
%IDD_DIALOG1 = 101
%IDC_LISTBOX1 = 1001
%IDC_IMGCTX = 1002
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' Retrieves the path of the calling process.
'------------------------------------------------------------------------------
FUNCTION GetExePath() AS STRING
LOCAL szFilespec AS ASCIIZ * %MAX_PATH
LOCAL lPathOffset AS LONG
GetModuleFileName %NULL, BYVAL VARPTR(szFilespec), %MAX_PATH
lPathOffset = INSTR(-1, szFilespec, ANY "/\")
FUNCTION = LEFT$(szFilespec, lPathOffset)
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Declarations **
'------------------------------------------------------------------------------
DECLARE CALLBACK FUNCTION ShowDIALOG1Proc()
DECLARE FUNCTION SampleListBox(BYVAL hDlg AS DWORD, BYVAL lID AS LONG, BYVAL _
lCount AS LONG) AS LONG
DECLARE FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Main Application Entry Point **
'------------------------------------------------------------------------------
FUNCTION PBMAIN()
ShowDIALOG1 %HWND_DESKTOP
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** CallBacks **
'------------------------------------------------------------------------------
CALLBACK FUNCTION ShowDIALOG1Proc()
SELECT CASE AS LONG CBMSG
CASE %WM_INITDIALOG
' Initialization handler
CASE %WM_NCACTIVATE
STATIC hWndSaveFocus AS DWORD
IF ISFALSE CBWPARAM THEN
' Save control focus
hWndSaveFocus = GetFocus()
ELSEIF hWndSaveFocus THEN
' Restore control focus
SetFocus(hWndSaveFocus)
hWndSaveFocus = 0
END IF
CASE %WM_COMMAND
' Process control notifications
SELECT CASE AS LONG CBCTL
CASE %IDC_LISTBOX1
LOCAL strText AS STRING
LOCAL strPath AS STRING
IF CBCTLMSG = %LBN_DBLCLK THEN
LISTBOX GET TEXT CBHNDL, %IDC_LISTBOX1 TO strText
strPath = GetExePath & strText ' Change it for the path of the image
TB_DDT_ImgCtx_LoadImage CBHNDL, %IDC_IMGCTX, strPath
END IF
END SELECT
END SELECT
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Sample Code **
'------------------------------------------------------------------------------
FUNCTION SampleListBox(BYVAL hDlg AS DWORD, BYVAL lID AS LONG, BYVAL lCount _
AS LONG) AS LONG
' for test only this come from SQLite3 inventory
LISTBOX ADD hDlg, lID, "Test.jpg"
LISTBOX ADD hDlg, lID, "Star.jpg"
LISTBOX ADD hDlg, lID, "beauty.jpg"
LISTBOX ADD hDlg, lID, "Moon.gif"
LISTBOX ADD hDlg, lID, "Water.jpg"
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Dialogs **
'------------------------------------------------------------------------------
FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
LOCAL lRslt AS LONG
LOCAL hDlg AS DWORD
TB_InitImgCtx ' Initialize the control
DIALOG NEW hParent, "Test read from disk to show image", 139, 145, 201, _
121, %WS_POPUP OR %WS_BORDER OR %WS_DLGFRAME OR %WS_SYSMENU OR _
%WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME OR %DS_3DLOOK OR _
%DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_CONTROLPARENT OR %WS_EX_LEFT _
OR %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR, TO hDlg
CONTROL ADD LISTBOX, hDlg, %IDC_LISTBOX1, , 15, 10, 60, 90
CONTROL ADD "TB_IMGCTX", hDlg, %IDC_IMGCTX, "", 115, 15, 65, 75, %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %WS_BORDER
SampleListBox hDlg, %IDC_LISTBOX1, 30
DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt
FUNCTION = lRslt
END FUNCTION
'------------------------------------------------------------------------------
Thanks José work 110% 8)