Al programar en Windows, a menudo encontramos que hay muchas funciones que el sistema Windows ya ha implementado. Si se pueden llamar directamente, se puede ahorrar mucha escritura del programa y mejorar la eficiencia de ejecución del programa. En muchos casos, podemos usar "Ctrl +". Poder llamar estas funciones del sistema en un programa elimina la necesidad de preocuparnos por cómo implementar estas operaciones. Después de una exploración constante, finalmente descubrí que SendMessage y PostMessage pueden realizar esta importante tarea. Es un tesoro, así que no puedo esperar para presentárselos a todos mis amigos.
Estas dos funciones API se pueden encontrar fácilmente utilizando el "Navegador API" de VB5:
DeclareFunctionSendMessageLib "user32" Alias "SendMessageA"_(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,_lParamAsAny)AsLong
DeclareFunctionPostMessageLib "user32" Alias "PostMessageA"_(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,_ByVallParamAsLong)AsLong
Las funciones de estas dos funciones son casi las mismas, excepto que SendMessage llama directamente a la función de Windows para enviar el mensaje. Esta función regresa solo después de que el mensaje se procesa por completo, mientras que PostMessage agrega un mensaje a la cola de mensajes del formulario. será manejado durante el manejo normal de eventos en algún momento en el futuro. Lo siguiente solo toma SendMessage como ejemplo.
Aunque hay cuatro parámetros en la función, los claves son los dos primeros: hwnd y wMsg. Hwnd es un identificador. Cada formulario y control en una aplicación de Microsoft Windows tiene un identificador. El identificador puede indicar el objeto de operación de la función. wMsg es un número hexadecimal que representa el mensaje específico que enviará la función.
A continuación se utilizan ejemplos específicos para ilustrar cómo utilizar SendMessage para implementar las funciones "cortar", "copiar", "pegar", "deshacer" y "eliminar":
Coloque un cuadro de texto Texto1 y cinco botones en el formulario para realizar las cinco funciones anteriores respectivamente y escriba el siguiente programa.
OpciónExplícito
PRivateDeclareFunctionSendMessageLib "user32" Alias "SendMessageA"_(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong
ConstWM_CUT=&H300
ConstWM_COPY=&H301
ConstWM_PAST=&H302
ConstWM_CLEAR=&H303
ConstWM_UNDO=&H304
DimfbComoLargo
PrivadoSubcmdClear_Click()
fb=Publicar mensaje(Texto1.hwnd,WM_CLEAR,0,0)
FinSub
PrivadoSubcmdCopy_Click()
fb=EnviarMensaje(Texto1.hwnd,WM_COPY,0,0)
FinSub
PrivadoSubcmdCut_Click()
fb=EnviarMensaje(Texto1.hwnd,WM_CUT,0,0)
FinSub
PrivadoSubcmdPast_Click()
fb=EnviarMensaje(Texto1.hwnd,WM_PAST,0,0)
FinSub
PrivadoSubcmdUndo_Click()
fb=EnviarMensaje(Texto1.hwnd,WM_UNDO,0,0)
FinSub
Además de TextBox, SendMessage también puede funcionar en RitchTextBox y ComboBox, etc., siempre que el parámetro hwnd se cambie en consecuencia. ->