Usuario: anónimo

Usuarios en línea: 1
Invitados: 1

FAQ

Mensaje

10m
Re: Controles de Windows API 32
U(Daniel de Dios) 2020-02-14 12:14:35  H

Gracias Salvador.  Nuevamente te doy las gracias por la información, que me será muy útil, ahora tengo mucho que leer, comprender y experimentar, pues veo que hay varias formas de conseguir lo que quiero.  El tener el control sobre los controles era imprescindible para programar en serio, pero se puede conseguir añadir más cosas con la superclase.  Ya veremos, es cosa de probarlo.

Saludos

Daniel de Dios "El Ignorado"

________________________________

De: Cconclase <cconclase-bounces@listas.conclase.net>  en nombre de Salvador Pozo <salvador@conclase.net>

Enviado: martes, 11 de febrero de 2020 17:12

Para: cconclase@listas.conclase.net <cconclase@listas.conclase.net>

Asunto: Re: [C con Clase] Controles de Windows API 32

Hola:

Esto es un tema "avanzado" del API de Windows. :)

Lo que necesitas para personalizar más un control es crear una subclase. La documentación de microsoft explica cómo hacerlo:

https://docs.microsoft.com/en-us/windows/win32/winmsg/about-window-procedures

Básicamente consiste en crear tu propio procedimiento de ventana para el control que quieres modificar, y usar la función: SetWindowLong

http://winapi.conclase.net/curso/?winfun=SetWindowLong

Para que los mensajes se envíen a ese procedimiento. Una vez que hayas procesado los mensajes que te interese, el resto se envían al procedimiento de ventana original usando CallWindowProc y la dirección del procedimiento que has debido conservar previamente, y que te devuelve SetWindowLong.

DdD>  En cuanto a los problemas con los fuentes y colores, ha de ser algún problema con los includes, pues parece que no reconoce las funciones como parte de una DLL, y parece que el link, espera resolver los problemas con una biblioteca estática.  (Por cierto, ¿como se indica que funciones ha de buscar en una DLL en concreto?)

DdD>  ¿Hay que indicar algo en los includes, o se ha de añadir la DLL, en cuestión en el Link como se con las bibliotecas estáticas?

La función SetBkColor requiere la DLL Comctl32.dll, deberías añadirla en la configuración del proyecto para que se enlace.

No sé qué compilador estás usando, y la forma de añadir librerías en la fase

de enlazado es diferente en cada uno. En el caso de Code::Blocks es en "opciones de proyecto", "Linker settings", "Link libraries". Basta con añadir el nombre de la librería, sin el "DLL", en este caso "comctl32".

Aunque usando este IDE aparentemente no es necesario, ya que el propio IDE carga esa DLL para su uso, y enmascara los errores en el proyecto. Esto puede ser un problema cuando se ejecute la aplicación y ninguna otra haya cargado esa librería. :(

Hasta pronto.

--

Salvador Pozo (Administrador)

mailto:salvador@conclase.net

Blog con Clase: http://blogconclase.wordpress.com

Con Clase: http://conclase.net

_______________________________________________

Lista de correo Cconclase Cconclase@listas.conclase.net

http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net

Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

_______________________________________________

Lista de correo Cconclase Cconclase@listas.conclase.net

http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net

Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ