FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Xbase++ :lockUpdate() -> Fivewin ?
Posts: 1772
Joined: Thu Sep 05, 2019 05:32 AM
Xbase++ :lockUpdate() -> Fivewin ?
Posted: Sat Nov 12, 2022 02:02 AM
hi,

when "resize" i use this under Xbase++
Code (fw): Select all Collapse
PROCEDURE MyResize(aOldSize, aNewSize, oSelf)
   ...
   oSelf:lockUpdate(.T.)

   aChild := oSelf:Childlist()
   FOR ii := 1 TO LEN(aChild)
      // for all Controls
   NEXT

   oSelf:lockUpdate(.F.)
   oSelf:invalidateRect()

RETURN
Question :
a.) how can i suppress Screen "Output" while resize Control under Fivewin :?:
b.) under Xbase++ all Controls are "repaint" using invalidateRect() but under Fiverwin EACH Control need it :?:

---

i do have search for "LockWindowUpdate" but not found under Fivewin
https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-lockwindowupdate

i use this under HMG
Code (fw): Select all Collapse
#include "DLL.CH"
#define DLL_STDCALL                 0x20
STATIC PROCEDURE DoResize( oMain, ...)
   ...
   DLLCall( "user32.dll", DLL_STDCALL, "LockWindowUpdate", oMain:Hwnd )
   // resize Controls
   DLLCall( "user32.dll", DLL_STDCALL, "LockWindowUpdate", 0 )
   oMain:refresh()
greeting,

Jimmy
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Xbase++ :lockUpdate() -> Fivewin ?
Posted: Sat Nov 12, 2022 07:06 AM
Dear Jimmy,
Code (fw): Select all Collapse
HB_FUNC( LOCKWINDOWUPDATE )
{
   hb_retl( LockWindowUpdate( ( HWND ) hb_parnll( 1 ) );
}
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1772
Joined: Thu Sep 05, 2019 05:32 AM
Re: Xbase++ :lockUpdate() -> Fivewin ?
Posted: Sun Nov 13, 2022 06:26 AM
hi Antonio,
Antonio Linares wrote:   
Code (fw): Select all Collapse
hb_retl( LockWindowUpdate( ( HWND ) hb_parnll( 1 ) );
thx

typo, must be
Code (fw): Select all Collapse
hb_retl( LockWindowUpdate( ( HWND ) hb_parnll( 1 ) )  ) ;
greeting,

Jimmy
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Xbase++ :lockUpdate() -> Fivewin ?
Posted: Sun Nov 13, 2022 08:11 PM

Dear Jimmy,

you are right

thanks!

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Xbase++ :lockUpdate() -> Fivewin ?
Posted: Thu Nov 02, 2023 03:42 PM

Duda: para que sirve este comando LOCKWINDOWUPDATE() ?

Gracias.

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1772
Joined: Thu Sep 05, 2019 05:32 AM
Re: Xbase++ :lockUpdate() -> Fivewin ?
Posted: Thu Nov 02, 2023 06:10 PM
hi,

have a look at https://learn.microsoft.com/de-de/windows/win32/api/winuser/nf-winuser-lockwindowupdate

i use it e,g, when "re-size" a Window and do NOT want "paint" until all is finish
greeting,

Jimmy
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Xbase++ :lockUpdate() -> Fivewin ?
Posted: Fri Nov 03, 2023 09:07 AM
Nuevo método en la Clase TWindow de FWH:

METHOD LockUpdate( lOnOff ) INLINE LockWindowUpdate( If( Empty( lOnOff ) .or. lOnOff, ::hWnd, 0 ) )
Code (fw): Select all Collapse
HB_FUNC( LOCKWINDOWUPDATE )
{
   hb_retl( LockWindowUpdate( ( HWND ) hb_parnll( 1 ) ) );
}
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Xbase++ :lockUpdate() -> Fivewin ?
Posted: Fri Nov 03, 2023 10:04 AM
This seems a simpler version: Jimmy could you please try it with your code ? No need to supply a parameter

METHOD LockUpdate() INLINE LockWindowUpdate( ::hWnd )
Code (fw): Select all Collapse
HB_FUNC( LOCKWINDOWUPDATE )
{
   if( ! LockWindowUpdate( ( HWND ) hb_parnll( 1 ) ) )
      LockWindowUpdate( ( HWND ) 0 );
}
https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-lockwindowupdate
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM
Re: Xbase++ :lockUpdate() -> Fivewin ?
Posted: Fri Nov 03, 2023 12:15 PM
Antonio yo la dejaría como al principio pero usando hb_parptr:
Code (fw): Select all Collapse
HB_FUNC( LOCKWINDOWUPDATE )
{
   hb_retl( LockWindowUpdate( ( HWND ) hb_parptr( 1 ) ) );
}
hb_parptr() devuelve NULL si no se pasa nada que exactamente. lo que se quiere.
:)
______________________________________________________________________________

Sevilla - Andalucía
Posts: 1772
Joined: Thu Sep 05, 2019 05:32 AM
Re: Xbase++ :lockUpdate() -> Fivewin ?
Posted: Sat Nov 04, 2023 03:37 PM
hi Antonio,

i try to find HB_FUNC( LOCKWINDOWUPDATE ) but did not found it in my FWH Source ... hm
but i found it in "C" Files as "External" ... hm

so i try
Code (fw): Select all Collapse
%HBDIR%\bin\hbmk2 -find LOCKWINDOWUPDATE
but "no match" ... hm

---

in my FWH i have
Code (fw): Select all Collapse
PROCEDURE DoDBFResize( oWnd ... )

   LOCKWINDOWUPDATE( oWnd:Hwnd )
   FOR ii := 1 TO nMax
      oObj := aParts[ ii ]

      oObj:SetSize( nPart, 48 )
      oObj:SetPos( 0, nPart * ( ii - 2 ) )
   NEXT
   LOCKWINDOWUPDATE( 0 )

RETURN
which work as expect
greeting,

Jimmy
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Xbase++ :lockUpdate() -> Fivewin ?
Posted: Sat Nov 04, 2023 05:04 PM
Dear Jimmy,

using :
Adding this to Class TWindow: METHOD LockUpdate() INLINE LockWindowUpdate( ::hWnd )
Code (fw): Select all Collapse
HB_FUNC( LOCKWINDOWUPDATE )
{
   if( ! LockWindowUpdate( ( HWND ) hb_parnll( 1 ) ) )
      LockWindowUpdate( ( HWND ) 0 );
}
Your code could be changed this way:
Code (fw): Select all Collapse
PROCEDURE DoDBFResize( oWnd ... )

   oWnd:LockUpdate()
   FOR ii := 1 TO nMax
      oObj := aParts[ ii ]

      oObj:SetSize( nPart, 48 )
      oObj:SetPos( 0, nPart * ( ii - 2 ) )
   NEXT
   oWnd:LockUpdate()

RETURN
regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion