DEFINE WINDOW - Ancho variable

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

DEFINE WINDOW - Ancho variable

Post by SALINETAS24 »

Buenos días.
Quiero dimensionar una WINDOW en base a la longitud de una cadena.
He encontrado las siguientes funciones GETTEXTWIDTH y GETTEXTHEIGHT por el foro y he probado a utilizarlas de diferentes maneras, pero siempre obtengo el mismo resultado.
En mi caso no me tiene en cuenta el SIZE de la FUENTE y la longitud de la cadena siempre es la misma.

nAnchoBox:=(GETTEXTWIDTH ( nil,"cadena", hFont))

Tambien he incorporado estas lineas, obtenidas del foro, y al compilar me dan un monton de advertencias.?¿?¿

Code: Select all

#include "hmg.ch"

#pragma BEGINDUMP
#include <windows.h>

// Create logical font and select into DC (device context)
// Must use DelectObject to destroy the logical font
HB_FUNC( CREATELOGFONT )
{
   HDC hDC = hb_parnl( 1 );
   const char * FontName = hb_parc( 2 );
   int FontSize = hb_parni( 3 );
   BOOL lBold = hb_parl( 4 ); 
   DWORD lItalic = (DWORD) hb_parl( 5 );

   int fnWeight = ( lBold ? FW_BOLD : FW_NORMAL );
   long FontHeight; HFONT hxfont;

   FontHeight = -MulDiv( FontSize, GetDeviceCaps( hDC, LOGPIXELSY ), 72 );
   hxfont = 
   CreateFont( FontHeight, 0, 0, 0, fnWeight, lItalic, 0, 0, 
      DEFAULT_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, 
      DEFAULT_QUALITY, FF_DONTCARE, FontName );

   hb_retnl( (LONG) hxfont ); 
}

#pragma ENDDUMP

PROCEDURE Main() 
	
	DEFINE WINDOW JM_BOX	                 ;
        AT    0, 0 	                         ;
        WIDTH 400 HEIGHT 250              ;
        TITLE "LONGITUD CADENA"            ; 
        MODAL NOSIZE NOSYSMENU    	;
		ON INIT Probatura()
		
		ON KEY ESCAPE ACTION JM_BOX.Release
		
		@ 10,10 LABEL Say_1 VALUE "" TRANSPARENT WIDTH 400
	
	END WINDOW
*	CENTER WINDOW JM_BOX        
    JM_BOX.Activate   

RETURN		

STATIC FUNCTION Probatura

LOCAL xletra:={"Arial","Courier","Times New Roman"}
LOCAL xTam:={8,10,12,14,16}
LOCAL N,M, hFont
LOCAL cMsg:="SELECCIONE UNA EMPRESA"

	JM_Box.Say_1.Value:=cMsg
	FOR N=1 TO 3	
		JM_Box.Say_1.FontName :=xLetra[n]
		FOR M=1 TO 5
			hFont := CreateLogFont( nil,xLetra[n],xTam[m],.f.,.f.)
			nAnchoBox:=(GETTEXTWIDTH ( nil,cMsg, hFont))
			JM_Box.Say_1.FontSize:=xTam[M]
			JM_BOX.Say_1.Refresh
			MSGBOX(cMsg+" Font "+xLetra[n]+" Size "+str(xTam[m])+" LONGITUD :"+str(nAnchoBox),"Len Cadena")
		NEXT
	NEXT
RETURN
Muchas gracias por anticipado
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: DEFINE WINDOW - Ancho variable

Post by SALINETAS24 »

Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
Post Reply