msgbox a la windows vista

En mis programas tengo los mensajes del sistema personalizados. De esta manera controlo que mis programas siempre muestren los típicos mensajes de confirmación, información, alerta y parada de la misma manera en todas las versiones de Windows. También uso mis propios iconos para los mensajes, sacados de las colecciones de iconexperience que uso también en mis programas. De esta manera consigo uniformidad en los programas.

En Windows Vista los mensajes del sistema presentan un aspecto distinto a las anteriores versiones de Windows. Además de los iconos característicos de la nueva versión de Windows, el formulario está visualmente dividido en dos zonas, la de arriba es blanca y contiene el icono y el texto del mensaje, mientras que la parte de abajo es del color habitual del formulario y contiene el botón o botones del mismo.Con FWH es fácil hacer un formulario de estas características usando el control Pages. No hay más que definir el formulario con un control pages donde va la zona blanca y luego crear otro formulario que se solapará encima del anterior. La definición del formulario principal en el fichero RC es de la siguiente manera:

1UT_INFO DIALOG DISCARDABLE 29, 34, 206, 88
2STYLE WS_POPUP|DS_MODALFRAME|WS_CAPTION|WS_SYSMENU
3CAPTION "Cuaderno de Bitácora"
4FONT 8, "Ms Sans Serif"
5{
6  CONTROL "&Aceptar", IDOK, "Button", BS_DEFPUSHBUTTON|WS_TABSTOP, 144, 66, 50, 16
7  CONTROL "", 110, "Static", SS_WHITERECT, 0, 0, 206, 60
8}

El control que va a contener el control page es el identificado con 110. La definición del formulario que va dentro del control Page del formulario principal es como sigue:

1UT_INFO_PAGE DIALOG DISCARDABLE 77, 112, 203, 60
2STYLE WS_CHILD|WS_CLIPCHILDREN
3FONT 8, "MS Sans Serif"
4{
5  CONTROL "", 10, "Static", WS_GROUP, 48, 8, 142, 44
6  CONTROL "", 111, "TBitmap", 0x00000000, 8, 4, 36, 36
7}

El código de la función que muestra el formulario es el siguiente:

1FUNCTION msginfo(cText, cCaption)
2   LOCAL oDlgInfo, oPage
3   LOCAL oBmp
4 
5   DEFAULT cCaption := oApp():cAppName+oApp():cVersion
6 
7   DEFINE DIALOG oDlgInfo RESOURCE "UT_INFO" TITLE cCaption
8   oDlgInfo:oFont  := oApp():oFont
9 
10   REDEFINE PAGES oPage ID 110 OF oDlgInfo ;
11      DIALOGS "UT_INFO_PAGE"
12    oPage:oFont := oApp():oFont
13 
14   REDEFINE SAY PROMPT cText ID 10 OF oPage:aDialogs[1]
15   REDEFINE BITMAP oBmp ID 111 OF oPage:aDialogs[1] RESOURCE "xpinfo" TRANSPARENT
16 
17   REDEFINE BUTTON ID IDOK OF oDlgInfo  ;
18      ACTION oDlgInfo:End()
19 
20   ACTIVATE DIALOG oDlgInfo ;
21      ON INIT oDlgInfo:Center( oApp():oWndMain )
22 
23RETURN Nil

con lo que conseguimos un formulario como el siguiente:

2 comentarios en «msgbox a la windows vista»

Los comentarios están cerrados.

alanit
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.