[C con Clase] cambiar estilo de edit

Steven Davidson srd4121 en njit.edu
Jue Jul 3 19:35:09 CEST 2008


Hola Adolfo,

Adolfo Cárdenas wrote:
> Buenas con todos.
> 
> Mi pregunta es si se puede cambiar el estilo de un control
> después de haberlo creado con CreateWindows(...
> Tengo un control Edit que quisiera pasarlo a ES_UPPERCASE
> dependiendo de una opción activada.

Sí. Usa 'SetWindowLong()' para establecer nuevos valores para ciertos 
atributos de una ventana y 'GetWindowLong()' para obtener los valores ya 
establecidos. Por ejemplo,

LONG dwEstilo = GetWindowLong( hEdit, GWL_STYLE );
LONG dwEstiloAnterior = SetWindowLong( hEdit, GWL_STYLE, dwEstilo | 
ES_UPPERCASE );

Para más información, puedes consultar la referencia en nuestro curso 
del API de MS-Windows. Específicamente, puedes ir a: 
http://winapi.conclase.net/curso/index.php?fun=GetWindowLong y 
http://winapi.conclase.net/curso/index.php?fun=SetWindowLong

La verdad es que es aconsejable usar las nuevas "versiones" de estas dos 
funciones: 'GetWindowLongPtr()' y 'SetWindowLongPtr()'. Los prototipos y 
uso son iguales, excepto que usan el tipo 'LONG_PTR' en lugar de 'LONG'. 
Estas funciones sirven para implementar programas de 32 y 64 bits.

> Por el momento estoy usando dos controles.
> También si se puede volver visible o invisible un control.
> 

Puedes cambiar el estilo, eliminando el bit o banderín 'WS_VISIBLE'. Sin 
embargo, el efecto no es instantáneo. Deberás forzar un redibujado del 
control.

Otra manera es con la función 'ShowWindow()'. Por ejemplo,

ShowWindow( hEdit, SW_HIDE );


Espero que esto te sirva.

Steven






Más información sobre la lista de distribución Cconclase