• Welcome to Powerbasic Museum 2020-B.
 

News:

Forum in repository mode. No new members allowed.

Main Menu

RE: INFORMATION to user ...one solution...

Started by Robert Sarrazin, February 19, 2008, 06:37:23 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Robert Sarrazin

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.      ::)

Patrice Terrier

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?

...
Patrice Terrier
GDImage (advanced graphic addon)
http://www.zapsolution.com

José Roca

#2
 
@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


Robert Sarrazin

#3
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

José Roca

 
This is because the graphic window has not the focus. Add  GRAPHIC SET FOCUS after GRAPHIC ATTACH hWin, 0.

Robert Sarrazin

Thank José

It's work very well
thanks again for the second choice. ;)