visual studio 2010 - studio - SendMessage y PostMessage, ¿cuál es mejor usar?
visual studio css intellisense (1)
Buscando en la web la diferencia entre estas dos llamadas a función, he encontrado que:
La diferencia entre estas dos llamadas API es la forma en que devuelven el control a la aplicación de llamada. Con SendMessage, el control no se devuelve a la aplicación llamante hasta que la ventana a la que se envió el mensaje haya terminado de procesar el mensaje enviado; sin embargo, con el control PostMessage se devuelve inmediatamente a la aplicación que realiza la llamada, independientemente del clima o no.
postMessage: envía un mensaje en la cola de mensajes asociada con el hilo y lo devuelve sin esperar a que el hilo procese ese mensaje.
SendMessage: llama al procedimiento de ventana para la ventana especificada y no regresa hasta que el procedimiento de ventana haya procesado el mensaje.
PostMessage es una función asincrónica donde SendMessage es una función síncrona.
Ahora la pregunta es para mi aplicación (que necesita un alto rendimiento), ¿qué función es mejor usar?
Tenga en cuenta que estoy usando MFC en Visual Studio 2010 y para este código:
CWnd *pParentOfClass = CWnd::GetParent();
pParentOfClass ->
Solo tengo estas funciones para enviar mensajes:
PostMessageW
Enviar mensaje
SendMessageW
Más preguntas:
¿Puede decirme la diferencia entre SendMessage y SendMessageW ?
En realidad, ya respondió su propia pregunta describiendo SendMessage y PostMessage.
SendMessage: envía un mensaje y espera hasta que finaliza y vuelve el procedimiento que es responsable del mensaje.
PostMessage: envía un mensaje a la cola de mensajes y lo devuelve inmediatamente. Pero no sabes cuándo se está procesando ese mensaje. Por lo tanto, si debe esperar una respuesta de ese mensaje procesado, lo más probable es que también lo reciba a través de un mensaje.
Realmente depende de cuál usar, pero los resultados finales son más o menos lo mismo, solo se trata de cronometrar. Además, PostMessage es especialmente útil en aplicaciones de subprocesos múltiples, lo que le permite comunicarse de manera segura entre subprocesos a través de sus ventanas creadas.
PostMessage o SendMessage que terminan con A o W son solo indicadores de cómo se interpretarán las cadenas, es decir, solo o multibyte, respectivamente. Los que no tienen la terminación A o W son macros de preprocesador y se delegarán en lo que esté configurado para su aplicación.