[C con Clase] Controles winapi

Steven Davidson steven en conclase.net
Vie Ago 24 07:29:13 CEST 2007


Hola Walter,

El pasado 2007-08-23 18:17:20, walter escribió:

w> Hola a todos los de la lista!!!
w> Me surgieron bastantes dudas:

Vamos a verlas.

w> 1)Lleno un combobox con resultados de una consulta de una base de datos,
w> Envés que el usuario elija una y le de en un boton para que pase algo,
w> ¿se podría hacer lo mismo pero dándole doble clic?

Sí; se podría. Ahora bien, ten presente que para que un control combinado (combobox) acepte una doble pulsación del botón del ratón, éste debe ser "simple". Esto es, el control debe tener el estilo CBS_SIMPLE. Con esto, se muestra el cuadro de edición y el cuadro del listado. De lo contrario, en cuanto se pulsara en el listado, éste se cierra automáticamente.

El control enviará el mensaje de notificación 'CBN_DBLCLK' a la ventana pariente.

w> 2) Tengo un cuadro de dialogo con un  listbox que contiene datos de una
w> consulta de una base de datos, también tengo un boton, que en caso que
w> el usuario no encuentre el dato en el listbox, haga clic en el boton, este boton
w>  llama a otro cuadro de dialogo pero no cierra el primero cuadro, en el segundo
w>  cuadro de dialogo coloco el nuevo dato y le doy aceptar, al hacer
w> clic en aceptar
w> genera una consulta que cargar el nuevo dato en la base de datos.
w> ¿Mi pregunta es como hago para que después de de hacer clic en aceptar
w> me actualice el listbox del primer cuadro de dialogo?
w> E creado un trabalenguas…

Al regresar del segundo cuadro de diálogo, fuerza al control del listado a redibujarse. Usa 'InvalidateRect()' o alguna otra función similar.

w> 3)En un control edit multilínea el texto que se introduce desde un
w> archivo ya creado, mas concretamente seria el ejemplo 53 del curso de
w> winapi32.
w>  ¿se podría colocar con distintas fuentes o con diferente tamaño?
w> Ejemplo: el titulo con tamaño 14 y el texto siguiente en tamaño 10.

Me temo que no, ya que no hay forma de "agregar" texto a un control de edición. Por lo tanto, se usa la fuente seleccionada para dibujar el texto que contiene el control.

Lo que sí puedes hacer es usar un control de texto enriquecido. Con este tipo de control, sí puedes usar diferentes fuentes, al igual que diferentes estilos de fuentes junto con otras características.

La otra opción es crear tu propio control heredando de la clase "edit". Básicamente, impones tu propio procedimiento de ventana, para afrontar cualesquier mensajes que te interesa. Por consiguiente, puedes ajustar el comportamiento del control a tu gusto.

w> 3.b) Como le ago para imprimir el contenido del control edit multilínea?

No estoy muy seguro a qué te refieres con "imprimir". Si quieres imprimir a la pantalla, no hay mucho misterio, porque lo hace de por sí. Siempre puedes forzar una reimpresión del contenido del control, como con cualquier ventana.

Si te refieres a imprimir en una impresora, lo que hay en el cuadro de edición, entonces necesitarás el DC del control para copiarlo al DC de la impresora.


Espero que esto aclare las dudas.

Steven


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