Page 1 of 1

NUEVO GESTOR DE VENTANAS EN W11

PostPosted: Fri Aug 04, 2023 6:49 am
by JESUS MARIN
Buenos dias a todos.
Estoy intentando simular el nuevo gestor de ventanas de windows 11, al que además de posicionar la ventana en un lugar concreto, quiero darle una nueva funcionalidad.
Quiero en un programa con ventanas MDICHILD, poder sacar una MDICHILD y ponerla en una parte de la pantalla.
Para ello quiero similar el GESTOR DE VENTANAS DE WINDOWS 11.

Este es el nuevo GESTOR DE VENTANAS de Windows 11
Image

Quiero crear un dialogo para poder poner los botones apropiados, pero obtengo el diálogo con la barra de CAPTION
Image

Si le pongo el estilo POPUP no se muestra con el estilo de Windows 11, (contorno redondeado, sombras, etc...)
Image

¿alguien conoce el estilo o combinacion de estilos para conseguir el dialogo, sin la barra del caption y con bordes redondeados?
Muchas gracias

Jesús Marín

Re: NUEVO GESTOR DE VENTANAS EN W11

PostPosted: Fri Aug 04, 2023 3:31 pm
by karinha
Code: Select all  Expand view

// C:\FWH..\SAMPLES\ESQINRED.PRG

// Dialogo con esquinas redondas
#include "FiveWin.ch"

#Define CLR_MSPURPLE   nRGB( 0,   120, 215 ) //-> Purpura.
#Define CLR_ORANGE     nRGB( 255, 165, 000 ) //-> Orange     - Laranja

MEMVAR mOver, nRounder

FUNCTION Main()

   LOCAL oDlg, oBrush, oFont, nVar := 100

   SkinButtons()

   mOver    := .T.
   nRounder := 20 // Change this value betwen 0 and 250 to see a results

   DEFINE FONT  oFont NAME "TAHOMA" SIZE 0, - 14
   DEFINE BRUSH oBrush FILENAME "\fwh1905\bitmaps\olga1.jpg"

   DEFINE DIALOG oDlg SIZE 300, 400 PIXEL STYLE WS_POPUP BRUSH oBrush        ;
      FONT oFont TRANSPARENT

   @ 000, 000 BITMAP RESOURCE "" NOBORDER OF oDlg PIXEL SIZE 80, 21          ;
      ON LEFT CLICK Click( oDlg )

   @ 010, 010 SAY "This is some Text" SIZE 80, 12 PIXEL OF oDlg              ;
      COLOR CLR_MSPURPLE, CLR_WHITE TRANSPARENT UPDATE

   @ 030, 010 GET nVar PICTURE "999,999.99" SIZE 80, 12 PIXEL OF oDlg        ;
      UPDATE RIGHT

   @ 150, 010 SAY "Dialogo con Esquinas Redondas" SIZE 100, 12 PIXEL OF oDlg ;
      COLOR CLR_ORANGE, CLR_WHITE TRANSPARENT UPDATE

   @ 165, 010 SAY "<Click> en El BitMap: Move..." SIZE 100, 12 PIXEL OF oDlg ;
      COLOR CLR_GREEN, CLR_WHITE TRANSPARENT UPDATE

   @ 180, 100 BUTTON "Close" SIZE 40, 14 PIXEL OF oDlg ;
      ACTION( oDlg:End() ) CANCEL

   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT( RoundCorners( oDlg ) )

   RELEASE BRUSH oBrush
   RELEASE FONT  oFont

RETURN NIL

STATIC FUNCTION Click( yvent )

   LOCAL nGCPos

   IF .NOT. mOver
      RETURN NIL
   ENDIF

   WHILE GetKeyState( VK_LBUTTON )

      SYSREFRESH()

      nGCPos := GetCursorpos()

      MoveWindow( yvent:hWnd, nGCPos[ 1 ], nGCPos[ 2 ], yvent:nWidth, yvent:nHeight, .T. )

      IF .NOT. GetKeyState( VK_LBUTTON )

         EXIT

      ENDIF

   ENDDO

   nGCPos := GetCursorpos()

RETURN NIL

STATIC FUNCTION RoundCorners( oDlg )

   LOCAL aRect, hRgn

   aRect := GetClientRect( oDlg:hWnd )
   hRgn  := CreateRoundRectRgn( aRect, nRounder, nRounder )

   SetWindowRgn( oDlg:hWnd, hRgn )

   DeleteObject( hRgn )

RETURN NIL

#pragma BEGINDUMP

#include <Windows.h>
#include <HbApi.h>      // Cambiado: 04/08/2023
// #include <ClipApi.h> // error

HB_FUNC( SETWINDOWRGN )
{
  hb_retnl( SetWindowRgn( ( HWND ) hb_parnl( 1 ), ( HRGN ) hb_parnl( 2 ), TRUE ) );
}
#pragma ENDDUMP

// FIN / END - kapiabafwh@gmail.com
 


Regards, saludos.

Re: NUEVO GESTOR DE VENTANAS EN W11

PostPosted: Sat Aug 05, 2023 5:10 pm
by karinha