[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