Camino de programación de Visual Basic: cómo embellecer la interfaz
Si ha utilizado "Windows Optimization Master", definitivamente quedará impresionado por su interfaz. De hecho, puede utilizar ActiveSkin para hacerlo, y es incluso mejor si es el único software que utiliza. Quiero compartir es un archivo, además de algunas cargas de OCX, parece muy incómodo. Veamos cómo VB usa otras cosas para lograrlo.
Primero cree un nuevo proyecto EXE y luego arrastre algunos controles de Etiqueta en el formulario para ver las poderosas funciones de Etiqueta. El principio es usar Etiqueta para simular un botón, pero primero debe cambiar el. propiedades del control Etiqueta Ajústelo,
Nombre: LblBTn,
BorderStyle: 1,
Apariencia: 0,
Alineación. : 2,
El prototipo de dicho botón ya ha aparecido. Si el volumen del proyecto es grande, las propiedades de Nombre de varios controles de Etiqueta se pueden configurar de la misma manera. La identificación de los botones depende de la identificación. Propiedad de índice Para mayor comodidad, ingrese a la ventana de edición de código e ingrese el siguiente código:
PrivateConstLBL_BACK_COLOR=HE0E0E0'El color de fondo del control Etiqueta cuando es normal
PrivateConstLBL_WHEN_MOUSE_MOVE=HC0C0C0'El fondo. color de la etiqueta cuando se mueve el mouse
PrivateConstLBL_WHEN_MOUSE_DOWN=H808080'El color de fondo de la etiqueta cuando se presiona el mouse
Ingrese el siguiente contenido en el evento Load del formulario
PrivateSubForm_Load()
DimCountAsInteger
ForCount=0To3' Por favor reemplaza el 3 que sale con el número de tu LblBTn - 1
LblBtn (Count).BackColor=LBL_BACK_COLOR'Inicializa el fondo de LblBTn
NextCount
EndSub
Luego ocúpate del resto en los eventos MouseMove y MouseDown de LblBTn:
PrivateSubLblBtn_MouseDown(IndexAsInteger, ButtonAsInteger, ShiftAsInteger, PrivateSubLblBtn_MouseMove(IndexAsInteger, ButtonAsInteger, ShiftAsInteger, XAsSingle, YAsSingle) 'Este evento se activa cuando el mouse se mueve sobre LblBTn
DimCountAsInteger p>
DoEvents'Enseña temporalmente el control del sistema al sistema
IfButtonThenExitSub'Si se presiona el botón, sale del proceso
ForCount=0To3
IfCountIndexThen'Si no se presiona ningún otro botón
LblBTn ( Index).BackColor=LBL_BACK_COLOR'Establezca el fondo en normal
Else
LblBTn(Index).BackColor =LBL_WHEN_MOUSE_MOVE'Establece el fondo al fondo del movimiento del mouse
EndIf
NextCount
EndSub
PrivateSubForm_MouseMove(ButtonAsInteger, ShiftAsInteger, XAsSingle, YAsSingle)
DimCountAsInteger
DoEvents
ForCount=0To3
LblBTn(Count).Back
Color=LBL_BACKCOLOR'Restaurar fondo
NextCount
Fin
Sería más fácil utilizar el sistema de mensajes de Windows para completar esta "ardua" tarea, pero el problema Aquí viene, ¿qué debo hacer si el control Etiqueta no tiene identificador de ventana? Sin embargo, esta pregunta no tiene nada que ver con el título. Si la escribe, se le defraudará la tarifa del manuscrito :)
OK, eso es todo para el control Label. Ahora hablemos del control TextBox.
Me temo que ustedes están mirando. Si están acostumbrados a ver un fondo blanco, cambien el color para alimentar nuestros ojos de oveja (¿por qué dices oveja? No lo sé). ), pero los colores producidos por la función RGB proporcionada por VB no son muy atractivos, aquí déjame enseñarte un pequeño consejo. Si los tres parámetros de rojo, verde y azul de la función RGB son iguales, el color. Por supuesto, cuanto más cercano al blanco sea el color, mejor, pero no te lo puedes perder. El fondo de TextBox es RGB (235, 235, 235). Arrastre un TextBox al formulario y establezca las propiedades de la siguiente manera
Appearance0
BorderStyle1
MutilLineTrue
Nunca establezca la propiedad ScrollBars, de lo contrario afectará el efecto
Inicializar el TextBox en el evento Load del formulario
DimbkColorAsLong
PrivateSubForm_Load()
bkColor=RGB (235, 235, 235)
Text1.BackColor=bkColor
EndSub
En En el evento MouseMove de Form y Text1:
PrivateSubForm_MouseMove(ButtonAsInteger, ShiftAsInteger, XAsSingle, YAsSingle)
Text1.BorderStyle=0
EndSub
PrivateSuBText1_MouseMove(ButtonAsInteger, ShiftAsInteger, XAsSingle, YAsSingle) p>
DoEvents
Text1.BorderStyle=1
EndSub
Cuando se presiona ¿No es genial probar F5?
Quizás si has jugado a Stone Age, estarás muy contento con el efecto del TextBox interno, pero no puedes hacerlo todavía. Puedes usar SetFocus para los controles enfocados para establecer el enfoque, pero si hay demasiados controles. en un formulario, ¿no sería demasiado tonto usar SetFocus uno por uno? El protagonista de esta sección es——————Función API,
Primera declaración:
PrivateTypePOINTAPI
xAsLong
yAsLong
EndType
PrivateDeclareFunctionGetCursorPosLib"user32"Alias "GetCursorPos"(lpPointAsPOINTAPI)AsLong
PrivateDeclareFunctionWindowFromPointLib"user32"Alias"WindowFromPoint"(ByValxPointAsLong, ByValyPointAsLong)AsLong
PrivateDeclareFunctionSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong
Pero el SetFocus aquí será el mismo que el conjunto del control
El foco será confuso, cámbielo,
PrivateDeclareFunctionnSetFocusLib"user32"Alias"SetFocus"(ByValhwndAsLong)AsLong
Siempre que la interfaz apuntada por Alias sea correcta, la función anterior El nombre es simplemente una decoración,
Al configurar un proceso:
PublicFunctionsSetFocus()AsLong
DimCPosAsPOINTAPI, SuccessfullAsBoolean, hWndAsLong
DoEvents
Successfull=GetCursorPos (CPos)
IfNotSuccessfullThenExitSub'Salir del proceso si no tiene éxito
hWnd=WindowFromPoint (CPos.x, CPos.y)
sSetFocus =nSetFocus(hWnd)
EndSub
Coloque un control Temporizador en el formulario, establezca la propiedad Intervalo en 100, que es 0,1 segundos, complete sSetFocus en el Temporizador evento del control Timer1, ejecútelo y vea cuál es el efecto.
Pero algunos caballeros y damas quieren preguntar: ¿TextBox no puede usar ScrollBar? No, no, seleccione Project-Components-MicrosoftWindowsCommonControls-26.0. (SP3) Esa es su respuesta. En cuanto a desplazarse por el cuadro de texto, simplemente estudie la función SendMessage; de lo contrario, se sospechará que está engañando la tarifa del manuscrito. Si desea crear un software ecológico y no desea utilizar controles, puede utilizar el. Control de etiquetas que mencioné anteriormente y uso la fuente Webdings para simular ScrollBar. Cabe señalar que si simula una ScrollBar, las flechas hacia arriba, abajo, izquierda y derecha son 5, 6, 3, 4 respectivamente. para configurar la fuente en Webdings
Hablemos del embellecimiento del formulario. De hecho, establecer el atributo BorderStyle en 0 es un buen embellecimiento 2D;) Sin embargo, el problema vuelve a surgir, ¿qué debemos hacer? ¿Necesitamos pedirle a la API que nos ayude con todo? Necesitamos dos API aquí. Aquí está la declaración de la API:
PublicDeclareFunctionReleaseCaptureLib"user32"Alias"ReleaseCapture"()AsLong Nota: Esta API es. se utiliza para desbloquear el rastreador del mouse. Para obtener más información sobre su uso y una introducción detallada, puede escribirme para realizar consultas.
También
#p#subtitle#e#
.PublicDeclareFunctionSendMessageLib"user32"Alias"SendMessageA" (ByValhwndAsLong, ByValwMsgAsLong, ByValwParamAsLong, lParamAsAny) AsLong' No debería presentar esto más
PublicConstHTCAPTION=2' representa el área de título del formulario.
PublicConstWM_NCLBUTTONDOWN=HA1' significa hacer clic con el botón izquierdo en el área que no funciona.
El principio es muy simple: retire el mouse. Después de que el rastreador envíe un mensaje para mover el formulario al Formulario, en realidad hay muchas formas de hacer esto, pero personalmente creo que esta es la más simple. Agregar un proceso:
PublicSubMoveForm (hWndAsLong)
DoEvents
SendMessagehWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0
EndSub
En el evento MouseMove del formulario:
Pr
ivateSubForm_MouseMove(ButtonAsInteger, ShiftAsInteger, XAsSingle, YAsSingle)
IfButton=vbLeftButtonThenMoveFormhWnd'Mover el formulario si se presiona el botón izquierdo del mouse
EndSub
Esto es lo que es sucediendo en la audiencia La señora está confundida otra vez, pero la forma básica no se ve bien sin la barra de título. Me gustaría recomendarle mis cosas: control ActiveX, ToolSign. Cualquiera que lo necesite puede escribirme. p>
Este control necesita agregar algo de código en el área de edición de código:
'La siguiente declaración se usa en el atributo AutoQuit de ToolSign
PublicConstEXIT_FORCE=2'Nota, ejecutándose en VB Si elige este método de salida, VB también saldrá
PublicConstEXIT_MESSAGE=1'Enviar un mensaje de cierre por parte del sistema operativo
PublicConstEXIT_CUSTOM=No (EXIT_FORCEOrEXIT_MESSAGE)'Personalizado p>
Después de registrarlo, marque e-DogkidStudioToolsSign en la barra de componentes, agréguelo a la caja de herramientas, haga doble clic para agregarlo al formulario,
Agregue algún código de inicialización en el evento Load de el formulario:
PrivateSubForm_Load()
WithSign1
.AutoQuit=EXIT_CUSTOM
.ParentsHWND=hWnd'Rellene este atributo y podrá puede usar ToolSign directamente para mover el formulario sin el código anterior
EndWith
EndSub
evento Click de Sign1
PrivateSubSign1_Click()
Fin'Cerrar el programa
EndSub
Agrega el siguiente código en el evento Resize del Formulario:
PrivateSubForm_Resize() p>
Sign1.Width= Ancho
EndSub
Si desea cambiar el tamaño del formulario, puede modificar las propiedades
Caption""
BorderStyle2 o 5
ControlBoxFalse
No sé si has visto la forma de prueba de explosión. Si no la has visto, ¿puedes preguntar? para otro ActiveXDLL mío. En realidad, se utiliza como biblioteca de tiempo de ejecución para mi software. Si no te importa, puedes usarlo. Después de registrarte, ve a Project-Reference-e-DogkidRuntimeLibrary
.Luego ingresa en el formulario Cargar evento:
PrivateSubForm_Load()
DimSystemAse_Dogkid_Runtime_Library.System
SetSystem=Newe_Dogkid_Runtime_Library.System
Mostrar
System.BoomIthDC, 60, Ancho, Alto, Izquierda, Arriba
SetSystem=Nada
EndSub
#p#subtitle #e#