Announcement

Collapse
No announcement yet.

Graphic attach, .... Redraw

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Walt Decker
    replied
    Dave:

    Thanks for the suggestions. In this particular case I don't really care when things are drawn, but in other apps I have it makes a difference.

    I'll explore your suggestions along with others I've thought about.

    Leave a comment:


  • Dave Biggs
    replied
    An alternative to the suggestion in post #8
    Code:
        CASE %WM_INITDIALOG
          ' Initialization handler
          GRAPHIC ATTACH DlgHnd, %GFX_Relations, Redraw
          DIALOG POST DlgHnd, %WM_USER + 1000, 0, 0
     
        CASE %WM_USER + 1000
          DIALOG REDRAW CBHNDL                              ' this makes sure that WM_PAINT 
                                                            ' at end of Dialog creation doesn't
                                                            ' occur after drawing statements
                                                            ' (which causes 'Graphic Redraw')
     
          PostMessage(DlgHnd, %DLG_MESS, %LB_SETSEL, 1)
          PostMessage(DlgHnd, %DLG_MESS, %LB_GETSEL, 0)
    That would be kind of analogous to the SDK form..
    Code:
      ShowWindow hWnd&, iCmdShow
      UpdateWindow hWnd&

    Leave a comment:


  • Dave Biggs
    replied
    ..I'll have to make some changes.
    You might want to try this?
    Code:
        CASE %WM_INITDIALOG
          ' Initialization handler
          GRAPHIC ATTACH DlgHnd, %GFX_Relations, Redraw
          DIALOG POST DlgHnd, %WM_USER + 1000, 0, 0
     
        CASE %WM_USER + 1000
          LOCAL Msg As tagMsg                               ' this makes sure that WM_PAINT 
          DO WHILE PeekMessage(Msg, 0, 0, 0, %PM_NOREMOVE)  ' at end of Dialog creation doesn't
            Dialog DoEvents 1                               ' occur after drawing statements
          LOOP                                              ' (which causes 'Graphic Redraw')
     
          PostMessage(DlgHnd, %DLG_MESS, %LB_SETSEL, 1)
          PostMessage(DlgHnd, %DLG_MESS, %LB_GETSEL, 0)

    Leave a comment:


  • Walt Decker
    replied
    Dave,

    Actually, it shouldn't matter where GRAPHIC ATTACH is specified. However, I found out why the behavior is as it is. I made the assumption that "posted" messages are placed at the end of the message que and processed after all other messages are processed. This is apparently not the case during setup. Therefore, I'll have to make some changes.

    Just goes to show that ASSUME makes "an *** out of me".

    Leave a comment:


  • Dave Biggs
    replied
    Walt,

    I get the same results from your short version code whether compiled with PBWin804, 90 or 901.
    I'm not sure the graphic is being 'updated' except for the first time through, when the code in the %WM_INITDIALOG case is processed.

    If I comment out all statements in %WM_INITDIALOG and move the GRAPHIC ATTACH.. statement to..
    Code:
              IF CtlMess = %LBN_SELCHANGE OR CtlMess = %LBN_DBLCLK Then
                GRAPHIC ATTACH DlgHnd, %GFX_Relations
    Then all works as expected - for all compilers - and if REDRAW is added to the statement, a corresponding GRAPHIC REDRAW is required before the Graphic is updated (and all compilers behave the same).

    Leave a comment:


  • Walt Decker
    replied
    No, Cliff.

    In PBWIN8, if GRAPHIC ATTACH ........ REDRAW was specified, the graphic was drawn to a buffer and would not be updated unless GRAPHIC REDRAW was specifically requested or the graphic control was covered by another window, the control was moved, or the dialog was moved. That made it possible for an app to have several threads performing graphic operations and the graphic would not be updated until GRAPHIC REDRAW was specified.

    In the above examples GRAPHIC ATTACH .... REDRAW is specified but GRAPHIC REDRAW is not. The graphic control is updated anyway.

    Leave a comment:


  • Cliff Nichols
    replied
    From the docs
    All PowerBASIC graphical displays are persistent -- they will be automatically redrawn even if minimized or temporarily covered by another window.
    Is this what you mean?????

    Leave a comment:


  • Walt Decker
    replied
    Steve:

    Below is compilable code. However, without the databases no drawing will occur. Perhaps it's the way I'm implementing the routines.

    Code:
    #COMPILE EXE
    DEFLNG A - Z
    
    #IF NOT %DEF(%WINAPI)
      #INCLUDE "WIN32API.INC"
    #ENDIF
    
    %IDD_DIALOG1   =  101
    %LBX_Relations = 1001
    %LBL_Relations = 1002
    %GFX_Relations = 1003
    
    %DLG_MESS      = %WM_USER + 500
    
    $NULSPC = CHR$(0 TO 32)
    
    DECLARE FUNCTION Set_Box(BYVAL hDlg AS DWORD, BYVAL lID AS LONG, Ag$(), Sz) AS LONG
    
    
    DECLARE FUNCTION Relations_DLG(BYVAL hParent AS DWORD) AS LONG
    
    DECLARE CALLBACK FUNCTION Relations_CB()
    
    FUNCTION PBMAIN()
      Relations_DLG %HWND_DESKTOP
    END FUNCTION
    
    '------------------------------------------------------------------------------
    '   ** CallBacks **
    '------------------------------------------------------------------------------
    
    CALLBACK FUNCTION Relations_CB()
    
    STATIC NumHeads   AS DWORD
    STATIC NumDatas   AS DWORD
    STATIC Nd         AS DWORD
    STATIC TxtWide    AS DWORD
    STATIC ChrWide    AS DWORD
    STATIC ChrHigh    AS DWORD
    STATIC NumAg      AS DWORD
    
    STATIC Dstart()   AS DWORD
    STATIC Dfield()   AS DWORD
    
    STATIC Dheads()   AS STRING
    STATIC Ddat()     AS STRING
    STATIC Abbr()     AS STRING
    STATIC Ag()       AS STRING
    
    STATIC Dcat       AS STRING
    
    LOCAL DlgHnd  AS DWORD
    LOCAL CtlHnd  AS DWORD
    
    LOCAL Wparam  AS LONG
    LOCAL Lparam  AS LONG
    LOCAL CtlMess AS LONG
    LOCAL TxtHigh AS LONG
    
    LOCAL A AS STRING
    
    DlgHnd = CBHNDL
    CtlHnd = CBCTL
    
    Lparam = CBLPARAM
    Wparam = CBWPARAM
    
    SELECT CASE AS LONG CBMSG
      CASE %WM_INITDIALOG
        ' Initialization handler
        DIM Ag$(1 TO 1)
        DIM Dstart(1 TO 1)
        DIM Dfield(1 TO 1)
        DIM Dheads$(1 TO 1)
        DIM Ddat$(1 TO 1)
    
        CALL Agreements(Ag$(), NumAg)
        CALL Read_Db(CURDIR$ + "\gamedb\$Leaders.FDB", Numheads, NumDatas, Dstart(), _
                     Dfield(), Dheads$(), Dcat$, Ddat$())
        CALL Read_Db(CURDIR$ + "\gamedb\$Relations.FDB", Numheads, Nd, Dstart(), _
                     Dfield(), Dheads$(), Dcat$, Ddat$())
    
        'if Val(Mid$(Ddat$(1), Dstart(5), Dfield(5)) = 0 then
        '  DestroyWindow(DlgHnd)
        'end if
    
        Set_Box(DlgHnd, %LBX_Relations, Ag$(), NumAg)
    
        GRAPHIC ATTACH DlgHnd, %GFX_Relations, REDRAW
    
        GRAPHIC COLOR RGB(128, 0, 0), -2
        FONT NEW "courier new", 10, 3, 0, 1, 0 TO Fhndl
        GRAPHIC SET FONT Fhndl
    
        A$ = "0"
        GRAPHIC CHR SIZE TO ChrWide, ChrHigh
    
        ChrWide = ChrWide * 2
        ChrHigh = ChrHigh * 2
    
        A$ = SPACE$(Dfield(2))
        GRAPHIC TEXT SIZE A$ TO TxtWide, TxtHigh
    
        PostMessage(DlgHnd, %DLG_MESS, %LB_SETSEL, 1)
        PostMessage(DlgHnd, %DLG_MESS, %LB_GETSEL, 0)
    
      CASE %WM_NCACTIVATE
        STATIC hWndSaveFocus AS DWORD
        IF ISFALSE Wparam THEN
          ' Save control focus
          hWndSaveFocus = GetFocus()
        ELSEIF hWndSaveFocus THEN
          ' Restore control focus
          SetFocus(hWndSaveFocus)
          hWndSaveFocus = 0
        END IF
    
      CASE %WM_COMMAND
        ' Process control notifications
        CtlMess = CBCTLMSG
        SELECT CASE AS LONG CtlHnd
          CASE %LBX_Relations
            IF CtlMess = %LBN_SELCHANGE OR CtlMess = %LBN_DBLCLK THEN
              GRAPHIC CLEAR
              X = TxtWide + ChrWide
              Y = 0
    
              CONTROL GET SIZE DlgHnd, %GFX_Relations TO Gfxx, Gfxy
    
              FOR I = 1 TO NumDatas
                A$ = RTRIM$(MID$(Ddat$(I), Dstart(2), Dfield(2)), ANY $NULSPC)
                IF VAL(MID$(Ddat$(I), Dstart(5), Dfield(5))) = 0 THEN A$ = "?"
                GRAPHIC SET POS(X, Y)
                GRAPHIC PRINT A$
                Lx! = X + TxtWide \ 2
                Ly! = Y + ChrHigh \ 2
                GRAPHIC LINE (Lx!, Ly!) - (Lx!, Gfxy), %BLUE
                X = X + TxtWide + ChrWide
              NEXT I
    
              X = 0
              Y = ChrHigh
    
              FOR I = 1 TO NumDatas
                A$ = RTRIM$(MID$(Ddat$(I), Dstart(2), Dfield(2)), ANY $NULSPC)
                IF VAL(MID$(Ddat$(I), Dstart(5), Dfield(5))) = 0 THEN A$ = "?"
                GRAPHIC SET POS(X, Y)
                GRAPHIC PRINT A$
                Lx! = X + TxtWide + ChrWide
                Ly! = Y + ChrHigh \ 4
                GRAPHIC LINE (Lx!, Ly!) - (Gfxx, Ly!), %BLUE
                Y = Y + ChrHigh
              NEXT I
    
              Rad! = 4 * ATN(1)
              Rad! = Rad! / 180
              Radius = 5
    
              FOR I = 1 TO Nd
    
                IF VAL(MID$(Ddat$(I), Dstart(5), Dfield(5))) < 1 THEN ITERATE FOR
                A$ = RTRIM$(MID$(Ddat$(I), Dstart(2), Dfield(2)), ANY $NULSPC)
                B$ = RTRIM$(MID$(Ddat$(I), Dstart(4), Dfield(4)), ANY $NULSPC)
                Peace = VAL(MID$(Ddat$(I), Dstart(7), Dfield(7)))
    
                Row = 0
                Col = 0
    
                FOR J = 1 TO NumDatas
                  IF VAL(MID$(Ddat$(I), Dstart(5), Dfield(5))) < 1 THEN ITERATE FOR
                  C$ = RTRIM$(MID$(Ddat$(J), Dstart(2), Dfield(2)), ANY $NULSPC)
                  IF A$ = C$ THEN
                    Row = J
                    EXIT FOR
                  END IF
                NEXT J
    
                FOR J = 1 TO NumDatas
                  IF VAL(MID$(Ddat$(I), Dstart(5), Dfield(5))) < 1 THEN ITERATE FOR
                  C$ = RTRIM$(MID$(Ddat$(J), Dstart(2), Dfield(2)), ANY $NULSPC)
                  IF B$ = C$ THEN
                    Col = J
                    EXIT FOR
                  END IF
                NEXT J
    
                Cx! = ((TxtWide + ChrWide) * Col) + TxtWide \ 2
                Cy! = (ChrHigh * Row) + ChrHigh \ 4
                Lx! = Cx!
                Ly! = Cy! - Radius
    
                GRAPHIC SET POS(Lx!, Ly!)
    
                FOR K = 0 TO 360
                  XX! = Cx! + Radius * SIN(K * Rad!)
                  YY! = Cy! - Radius * COS(K * Rad!)
                  IF Peace > 0 THEN
                    GRAPHIC LINE (Lx!, Ly!) - (XX!, YY!), %RED
                  ELSE
                    GRAPHIC LINE (Lx!, Ly!) - (XX!, YY!), %GREEN
                  END IF
                  Lx! = XX!
                  Ly! = YY!
                NEXT K
    
                IF Peace > 0 THEN
                  GRAPHIC PAINT (Cx!, Cy!), %RED, %RED
                ELSE
                  GRAPHIC PAINT (Cx!, Cy!), %GREEN, %GREEN
                END IF
              NEXT I
    
            END IF
            'GRAPHIC REDRAW
        END SELECT
      CASE %DlG_MESS
        IF Wparam = %LB_SETSEL THEN LISTBOX SELECT DlgHnd, %LBX_Relations, Lparam
        IF Wparam = %LB_GETSEL THEN
          Wparam = MAK(DWORD, %LBX_Relations, %LBN_DBLCLK)
          CONTROL HANDLE DlgHnd, %LBX_Relations TO CtlHnd
          Lparam = MAK(DWORD, CtlHnd, 0)
          PostMessage(DlgHnd, %WM_COMMAND, Wparam, Lparam)
        END IF
    END SELECT
    
    END FUNCTION
    
    '------------------------------------------------------------------------------
    '   ** Sample Code **
    '------------------------------------------------------------------------------
    
    FUNCTION Set_Box(BYVAL hDlg AS DWORD, BYVAL lID AS LONG, Ag$(), Sz) AS LONG
    
    LOCAL I AS LONG
    
    FOR I = 1 TO Sz
      LISTBOX ADD hDlg, lID, Ag$(I)
    NEXT I
    
    END FUNCTION
    
    '------------------------------------------------------------------------------
    '   ** Dialogs **
    '------------------------------------------------------------------------------
    
    FUNCTION Relations_DLG(BYVAL hParent AS DWORD) AS LONG
    
    LOCAL lRslt AS LONG
    LOCAL hDlg  AS DWORD
    
    DIALOG NEW hParent, "Foreign Relations", 86, 55, 429, 223, %WS_OVERLAPPED _
      OR %WS_BORDER OR %WS_DLGFRAME OR %WS_CAPTION 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, %LBX_Relations, , 5, 10, 95, 195, %WS_CHILD OR _
      %WS_VISIBLE OR %WS_TABSTOP OR %WS_VSCROLL OR %WS_HSCROLL OR %LBS_NOTIFY OR _
      %LBS_HASSTRINGS, %WS_EX_CLIENTEDGE OR %WS_EX_LEFT OR %WS_EX_LTRREADING _
      OR %WS_EX_RIGHTSCROLLBAR
    
    CONTROL ADD LABEL,   hDlg, %LBL_Relations, "War", 100, 10, 325, 10, _
      %WS_CHILD OR %WS_VISIBLE OR %SS_CENTER, %WS_EX_LEFT OR %WS_EX_LTRREADING
    
    CONTROL ADD GRAPHIC, hDlg, %GFX_Relations, "", 110, 25, 315, 195
    
    CONTROL SET COLOR    hDlg, %LBL_Relations, RGB(128, 0, 0), -1
    
    'Set_Box  hDlg, %LBX_Relations, 30
    
    DIALOG SHOW MODAL hDlg, CALL Relations_CB TO lRslt
    
    FUNCTION = lRslt
    
    END FUNCTION
    
    '------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    
    SUB Agreements(Ag$(), Sz)
    
    DATA "War"
    DATA "Preferred Trading Partner"
    DATA "Trade Embargos"
    DATA "Mutual Protection Pact"
    DATA "War Passage"
    DATA "Safe Passage"
    DATA "Trade Passage"
    DATA "Worker Passage"
    DATA "Military Alliances"
    
    Sz = DATACOUNT
    
    REDIM Ag$(1 TO Sz)
    
    FOR I = 1 TO Sz
      Ag$(I) = READ$(I)
    NEXT I
    
    END SUB
    
    '------------------------------------------------------------------------------
    '------------------------------------------------------------------------------
    
    SUB Read_Db(FPname$, Numheads, NumDatas, Ds(), Df(), Dh$(), Dct$, Ddt$())
    
    LOCAL Cnt   AS LONG
    LOCAL Offs  AS LONG
    
    Cnt = 1
    Offs = 4
    
    OPEN FPname$ FOR BINARY AS #1
    
    GET #1, Cnt, NumHeads
    Cnt = Cnt + Offs
    GET #1, Cnt, NumDatas
    Cnt = Cnt + Offs
    
    REDIM Dh$(1 TO NumHeads)
    REDIM Ds(1 TO NumHeads)
    REDIM Df(1 TO NumHeads)
    REDIM Ddt$(1 TO NumDatas)
    
    FOR I = 1 TO NumHeads
      GET #1, Cnt, Ds(I)
      Cnt = Cnt + Offs
      GET #1, Cnt, Df(I)
      Cnt = Cnt + Offs
    NEXT I
    
    FOR I = 1 TO NumHeads
      Dh$(I) = SPACE$(Df(I))
      GET #1, Cnt, Dh$(I)
      Cnt = Cnt + Df(I)
    NEXT I
    
    Dct$ = SPACE$(Ds(NumHeads) + Df(NumHeads))
    
    GET #1, Cnt, Dct$
    
    Cnt = Cnt + NumHeads
    Offs = Ds(NumHeads) + Df(NumHeads)
    
    FOR I = 1 TO NumDatas
      Ddt$(I) = SPACE$(Ds(NumHeads) + Df(NumHeads))
      GET #1, Cnt, Ddt$(I)
      Cnt = Cnt + Offs
    NEXT I
    
    CLOSE #1
    
    END SUB
    And here's a short version that displays the behavior:

    Code:
    #COMPILE EXE
    DEFLNG A - Z
    
    '------------------------------------------------------------------------------
    '   ** Includes **
    '------------------------------------------------------------------------------
    #PBFORMS BEGIN INCLUDES
    #IF NOT %DEF(%WINAPI)
      #INCLUDE "WIN32API.INC"
    #ENDIF
    #IF NOT %DEF(%COMMCTRL_INC)
      #INCLUDE "COMMCTRL.INC"
    #ENDIF
    #INCLUDE "PBForms.INC"
    #PBFORMS END INCLUDES
    '------------------------------------------------------------------------------
    
    '------------------------------------------------------------------------------
    '   ** Constants **
    '------------------------------------------------------------------------------
    #PBFORMS BEGIN CONSTANTS
    %IDD_DIALOG1  =  101
    %LBX_Relations = 1001
    %GFX_Relations = 1002
    #PBFORMS END CONSTANTS
    
    %DLG_MESS = %WM_USER + 500
    '------------------------------------------------------------------------------
    
    '------------------------------------------------------------------------------
    '   ** 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
    #PBFORMS DECLARATIONS
    '------------------------------------------------------------------------------
    
    '------------------------------------------------------------------------------
    '   ** Main Application Entry Point **
    '------------------------------------------------------------------------------
    FUNCTION PBMAIN()
      PBFormsInitComCtls (%ICC_WIN95_CLASSES OR %ICC_DATE_CLASSES OR _
        %ICC_INTERNET_CLASSES)
    
      ShowDIALOG1 %HWND_DESKTOP
    END FUNCTION
    '------------------------------------------------------------------------------
    
    '------------------------------------------------------------------------------
    '   ** CallBacks **
    '------------------------------------------------------------------------------
    CALLBACK FUNCTION ShowDIALOG1Proc()
    
    LOCAL DlgHnd  AS DWORD
    LOCAL CtlHnd  AS DWORD
    LOCAL DlgMess AS DWORD
    
    LOCAL Wparam  AS LONG
    LOCAL Lparam  AS LONG
    
    DlgHnd = CBHNDL
    CtlHnd = CBCTL
    
    Wparam = CBWPARAM
    Lparam = CBLPARAM
    
      SELECT CASE AS LONG CBMSG
        CASE %WM_INITDIALOG
          ' Initialization handler
          GRAPHIC ATTACH DlgHnd, %GFX_Relations, REDRAW
          PostMessage(DlgHnd, %DLG_MESS, %LB_SETSEL, 1)
          PostMessage(DlgHnd, %DLG_MESS, %LB_GETSEL, 0)
    
        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
          CtlMess = CBCTLMSG
          ' Process control notifications
          SELECT CASE AS LONG CtlHnd
            CASE %LBX_Relations
              IF CtlMess = %LBN_SELCHANGE OR CtlMess = %LBN_DBLCLK THEN
                GRAPHIC CLEAR
                GRAPHIC GET CLIENT TO X, Y
                Rad! = 4 * ATN(1)
                Rad! = Rad! / 180
                Radius = 25
                Cx! = X \ 2
                Cy! = Y \ 2
                Lx! = Cx!
                Ly! = Cy! - Radius
                
                GRAPHIC SET POS(Lx!, Ly!)
    
                FOR K = 0 TO 360 STEP 15
                  XX! = Cx! + Radius * SIN(K * Rad!)
                  YY! = Cy! - Radius * COS(K * Rad!)
                  GRAPHIC LINE (Lx!, Ly!) - (XX!, YY!), %RED
                  Lx! = XX!
                  Ly! = YY!
                NEXT K
                GRAPHIC PAINT (Cx!, Cy!), %RED, %RED
              END IF
            CASE %GFX_Relations
    
          END SELECT
        CASE %DlG_MESS
          IF Wparam = %LB_SETSEL THEN LISTBOX SELECT DlgHnd, %LBX_Relations, Lparam
          IF Wparam = %LB_GETSEL THEN
            Wparam = MAK(DWORD, %LBX_Relations, %LBN_DBLCLK)
            CONTROL HANDLE DlgHnd, %LBX_Relations TO CtlHnd
            Lparam = MAK(DWORD, CtlHnd, 0)
            PostMessage(DlgHnd, %WM_COMMAND, Wparam, Lparam)
          END IF
    
      END SELECT
    END FUNCTION
    '------------------------------------------------------------------------------
    
    '------------------------------------------------------------------------------
    '   ** Sample Code **
    '------------------------------------------------------------------------------
    FUNCTION SampleListBox(BYVAL hDlg AS DWORD, BYVAL lID AS LONG, BYVAL lCount _
      AS LONG) AS LONG
      LOCAL i AS LONG
    
      FOR i = 1 TO lCount
        LISTBOX ADD hDlg, lID, USING$("Test Item #", i)
      NEXT i
    END FUNCTION
    '------------------------------------------------------------------------------
    
    '------------------------------------------------------------------------------
    '   ** Dialogs **
    '------------------------------------------------------------------------------
    FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
      LOCAL lRslt AS LONG
    
    #PBFORMS BEGIN DIALOG %IDD_DIALOG1->->
      LOCAL hDlg  AS DWORD
    
      DIALOG NEW hParent, "Dialog1", 133, 70, 314, 180, %WS_POPUP OR %WS_BORDER _
        OR %WS_DLGFRAME OR %WS_CAPTION 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, %LBX_Relations, , 10, 5, 80, 160, %WS_CHILD OR _
        %WS_VISIBLE OR %WS_TABSTOP OR %WS_VSCROLL OR %LBS_NOTIFY, _
        %WS_EX_CLIENTEDGE OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
        %WS_EX_RIGHTSCROLLBAR
      CONTROL ADD GRAPHIC, hDlg, %GFX_Relations, "", 100, 5, 210, 160
    #PBFORMS END DIALOG
    
      SampleListBox  hDlg, %LBX_Relations, 30
    
      DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt
    
    #PBFORMS BEGIN CLEANUP %IDD_DIALOG1
    #PBFORMS END CLEANUP
    
      FUNCTION = lRslt
    END FUNCTION
    '------------------------------------------------------------------------------
    Last edited by Walt Decker; 1 Apr 2009, 05:06 PM.

    Leave a comment:


  • Steve Rossell
    replied
    Sometimes Windows may redraw the window, for example if you move the window, minimize and then maximize the window, cover it with another window then uncover it, etc. If it is something else, can you post code that exhibits this behavior or send it to support @ powerbasic.com?

    Leave a comment:


  • Walt Decker
    started a topic Graphic attach, .... Redraw

    Graphic attach, .... Redraw

    GRAPHIC ATTACH, Hndl, CtrlID, REDRAW appears to work differently in 9x than in 8x. The redraw seems to happen automatically without specifically requesting GRAPHIC REDRAW.

    Is there some way to suppress this behavior?
Working...
X