Hi,
The code work well,
If someone can show me how to add COLOR in the background,
and some color to the text , It might be less plain.
#DIM ALL
#INCLUDE "win32api.inc"
FUNCTION PBMAIN
DIM hpaint AS DWORD
LOCAL hCtrl, dwStyle, dwStyleEx AS LONG
LOCAL loadtxt AS STRING
loadtxt = CHR$(13) + " One moment PLEASE"+ _
CHR$(13)+ CHR$(13) +" loadind DATA"
dwStyle = %WS_POPUP OR %WS_VISIBLE OR %WS_BORDER
hpaint = CreateWindowEx(0, "STATIC", ""+loadtxt , dwStyle, _
300, 300, 300, 100, %NULL, 0, 0, BYVAL %NULL)
UpdateWindow(hpaint)
SLEEP 8000
DestroyWindow(hpaint)
MSGBOX "ok WORKING, destroy windows 8 sec."
END FUNCTION
::) Thank again for your time and Patrice help. ::)
Cherchez dans MSDN : WM_CTLCOLORSTATIC (search also in POFF, or in the PowerBASIC source code forum)
You must handle the message in a callback or in a classic (SDK) WinProc.
Thus your first choice must be: Do I want to use DDT or SDK?
...
@Robert,
For what you want to achieve, the simplest way is to use a graphic window, e.g.:
#COMPILE EXE
#DIM ALL
#INCLUDE "WIN32API.INC"
FUNCTION PBMAIN () AS LONG
' Create and show a Graphic window on screen
LOCAL hWin AS DWORD
GRAPHIC WINDOW "Splash", 200, 150, 310, 110 TO hWin
GRAPHIC ATTACH hWin, 0
GRAPHIC PAINT (0, 0), %BLUE, %WHITE
GRAPHIC FONT "Times New Roman", 18, 7
GRAPHIC COLOR %WHITE, %BLUE
GRAPHIC SET POS (20, 20)
GRAPHIC PRINT "One moment please."
GRAPHIC SET POS (20, 50)
GRAPHIC PRINT "Loading data."
SLEEP 5000 ' show it for 5 seconds, then end
GRAPHIC WINDOW END
END FUNCTION
Hi José
I try with graphic and I make a color progress bar.
But GRAPHIC give me a real problem with
" GRAPHIC WINDOW END "
That is the reason I can't use graphic
It seem close all the windows
and when the program start it will loss focus and the
program go to minimize windows.
SEE the 2 examples.
#COMPILE EXE
#DIM ALL
'------------------------------------------------------------------------------
' ** Includes **
'------------------------------------------------------------------------------
#IF NOT %DEF(%WINAPI)
#INCLUDE "WIN32API.INC"
#ENDIF
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Constants **
'------------------------------------------------------------------------------
%IDD_DIALOG1 = 101
%IDD_depart = 116
%IDC_LISTBOX1 = 1001
%IDC_LABEL1 = 1002
%IDC_Bnext = 1003
'------------------------------------------------------------------------------
GLOBAL p AS LONG
GLOBAL txt AS STRING
'------------------------------------------------------------------------------
' ** 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()
LOCAL hWin AS DWORD
GRAPHIC WINDOW "Splash", 200, 150, 310, 110 TO hWin
GRAPHIC ATTACH hWin, 0
GRAPHIC PAINT (0, 0), %BLUE, %WHITE
GRAPHIC FONT "Times New Roman", 18, 7
GRAPHIC COLOR %WHITE, %BLUE
GRAPHIC SET POS (20, 20)
GRAPHIC PRINT "One moment please."
GRAPHIC SET POS (20, 50)
GRAPHIC PRINT "Loading data."
' ====================================
' = file reading array sort =
SLEEP 3000
' = simulation sleep =
' = =
' ====================================
GRAPHIC WINDOW END
ShowDIALOG1 %HWND_DESKTOP
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** CallBacks **
'------------------------------------------------------------------------------
CALLBACK FUNCTION ShowDIALOG1Proc()
SELECT CASE AS LONG CBMSG
CASE %WM_INITDIALOG
' Initialization handler
LOCAL hList1 AS DWORD
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
IF CBCTLMSG = %LBN_SELCHANGE OR CBCTLMSG = %LBN_SETFOCUS THEN
CONTROL HANDLE CBHNDL, %IDC_LISTBOX1 TO hList1
p = SendMessage(hList1, %LB_GETCURSEL, 0, 0)
LISTBOX GET TEXT CBHNDL, %IDC_LISTBOX1 TO txt
CONTROL SET TEXT CBHNDL, %IDC_LABEL1, STR$(p) + " " + txt
END IF
CASE %IDC_LABEL1
CASE %IDC_Bnext
IF CBCTLMSG = %BN_CLICKED OR CBCTLMSG = 1 THEN
CALL SendMessage(hList1, %LB_SETCURSEL, 10, 0)
LISTBOX SELECT CBHNDL, %IDC_LISTBOX1, p+2
CONTROL SET FOCUS CBHNDL, %IDC_LISTBOX1
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
LISTBOX ADD hDlg, lID, "Robert"
LISTBOX ADD hDlg, lID, "John"
LISTBOX ADD hDlg, lID, "Frank"
LISTBOX SELECT hDlg, %IDC_LISTBOX1, 1
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Dialogs **
'------------------------------------------------------------------------------
FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
LOCAL lRslt AS LONG
LOCAL hDlg AS DWORD
LOCAL hFont1 AS DWORD
LOCAL hFont2 AS DWORD
DIALOG NEW hParent, "test only", 70, 300, 252, 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, , 11, 12, 62, 101
CONTROL ADD LABEL, hDlg, %IDC_LABEL1, "Label1", 79, 12, 160, 40, _
%WS_CHILD OR %WS_VISIBLE OR %SS_CENTER, %WS_EX_LEFT OR _
%WS_EX_LTRREADING
CONTROL ADD BUTTON, hDlg, %IDC_Bnext, "Next", 180, 84, 47, 19
CONTROL SEND hDlg, %IDC_LABEL1, %WM_SETFONT, hFont1, 0
CONTROL SEND hDlg, %IDC_Bnext, %WM_SETFONT, hFont2, 0
SampleListBox hDlg, %IDC_LISTBOX1, 30
DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt
DeleteObject hFont1
DeleteObject hFont2
FUNCTION = lRslt
END FUNCTION
'------------------------------------------------------------------------------
Now look a this one
#COMPILE EXE
#DIM ALL
'------------------------------------------------------------------------------
' ** Includes **
'------------------------------------------------------------------------------
#IF NOT %DEF(%WINAPI)
#INCLUDE "WIN32API.INC"
#ENDIF
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Constants **
'------------------------------------------------------------------------------
%IDD_DIALOG1 = 101
%IDD_depart = 116
%IDC_LISTBOX1 = 1001
%IDC_LABEL1 = 1002
%IDC_Bnext = 1003
'------------------------------------------------------------------------------
GLOBAL p AS LONG
GLOBAL txt AS STRING
'------------------------------------------------------------------------------
' ** 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()
DIM hpaint AS DWORD
LOCAL hCtrl, dwStyle, dwStyleEx AS LONG
LOCAL loadtxt AS STRING
loadtxt = CHR$(13) + " One moment PLEASE"+ _
CHR$(13)+ CHR$(13) +" loadind DATA"
dwStyle = %WS_POPUP OR %WS_VISIBLE OR %WS_BORDER
hpaint = CreateWindowEx(0, "STATIC", ""+loadtxt , dwStyle, _
300, 300, 300, 100, %NULL, 0, 0, BYVAL %NULL)
UpdateWindow(hpaint)
' ====================================
' = file reading array sort =
SLEEP 3000
' = simulation sleep =
' = =
' ====================================
DestroyWindow(hpaint)
ShowDIALOG1 %HWND_DESKTOP
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** CallBacks **
'------------------------------------------------------------------------------
CALLBACK FUNCTION ShowDIALOG1Proc()
SELECT CASE AS LONG CBMSG
CASE %WM_INITDIALOG
' Initialization handler
LOCAL hList1 AS DWORD
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
IF CBCTLMSG = %LBN_SELCHANGE OR CBCTLMSG = %LBN_SETFOCUS THEN
CONTROL HANDLE CBHNDL, %IDC_LISTBOX1 TO hList1
p = SendMessage(hList1, %LB_GETCURSEL, 0, 0)
LISTBOX GET TEXT CBHNDL, %IDC_LISTBOX1 TO txt
CONTROL SET TEXT CBHNDL, %IDC_LABEL1, STR$(p) + " " + txt
END IF
CASE %IDC_LABEL1
CASE %IDC_Bnext
IF CBCTLMSG = %BN_CLICKED OR CBCTLMSG = 1 THEN
CALL SendMessage(hList1, %LB_SETCURSEL, 10, 0)
LISTBOX SELECT CBHNDL, %IDC_LISTBOX1, p+2
CONTROL SET FOCUS CBHNDL, %IDC_LISTBOX1
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
LISTBOX ADD hDlg, lID, "Robert"
LISTBOX ADD hDlg, lID, "John"
LISTBOX ADD hDlg, lID, "Frank"
LISTBOX SELECT hDlg, %IDC_LISTBOX1, 1
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
' ** Dialogs **
'------------------------------------------------------------------------------
FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
LOCAL lRslt AS LONG
LOCAL hDlg AS DWORD
LOCAL hFont1 AS DWORD
LOCAL hFont2 AS DWORD
DIALOG NEW hParent, "test only", 70, 300, 252, 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, , 11, 12, 62, 101
CONTROL ADD LABEL, hDlg, %IDC_LABEL1, "Label1", 79, 12, 160, 40, _
%WS_CHILD OR %WS_VISIBLE OR %SS_CENTER, %WS_EX_LEFT OR _
%WS_EX_LTRREADING
CONTROL ADD BUTTON, hDlg, %IDC_Bnext, "Next", 180, 84, 47, 19
CONTROL SEND hDlg, %IDC_LABEL1, %WM_SETFONT, hFont1, 0
CONTROL SEND hDlg, %IDC_Bnext, %WM_SETFONT, hFont2, 0
SampleListBox hDlg, %IDC_LISTBOX1, 30
DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt
DeleteObject hFont1
DeleteObject hFont2
FUNCTION = lRslt
END FUNCTION
'------------------------------------------------------------------------------
what you thing about, but your box
it's very nice.
Thanks
This is because the graphic window has not the focus. Add GRAPHIC SET FOCUS after GRAPHIC ATTACH hWin, 0.
Thank José
It's work very well
thanks again for the second choice. ;)