Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.
Este artigo visa chamar atenção para as possibilidades que o sistema operacional Microsoft® Windows® proporciona.
Diversas vezes, enquanto lia tutoriais, apostilas e livros sobre técnicas de programação, via toda uma explicação sobre “Como fazer programas se comunicarem”, estes exibiam um ótimo conteúdo que explicava detalhadamente como implementar um Cliente / Servidor. Nada contra estes artigos, até digo que todos que já tive o prazer de ler eram muito bons, mas, quando queremos que dois aplicativos (que estão sendo executados ao mesmo tempo na mesma máquina) se comuniquem, temos caminhos mais ágeis e práticos. Um deles é o mesmo método com que o sistema operacional se comunica com o nosso aplicativo: o sistema de troca de mensagens.
Primeiramente, vamos entender como o sistema operacional (Windows, no nosso caso) funciona. Para isso, usaremos como exemplo o seguinte roteiro:
Para um usuário comum, tudo que eu acabei de descrever não passa de um simples conjunto de ações comuns, sem utilidade alguma, mas agora vamos estudar (mesmo que de um modo um pouco grosseiro, por assim dizer) o que realmente acontece, em nível de sistema operacional:
Um pouco maçante, eu sei, mas, como eu disse anteriormente, esta é só uma descrição “grosseira” do modo em que o sistema operacional gerencia seus processos. Na verdade, esse processo é finitamente (para não dizer infinitamente) mais complexo, pois mensagens são enviadas para todas as janelas a todo o momento, porém, a maioria delas o programa dá ao próprio sistema operacional o serviço de interpretá-las (utilizando um conjunto de ações padrões pré-definidas para mensagens específicas). Em outras palavras, é desse modo que você não precisa programar o que deve ser feito quando o usuário clicar no botão X no lado superior esquerdo do seu programa, ou no botão minimizar, por exemplo, pois todas as mensagens recebidas quando o usuário clica em um desses botões é enviada ao seu programa, que repassa para o sistema operacional, através de uma função chamada DefWindowProc (DEFault WINDOW PROCedure). Claro que grande parte dos programadores que lerem isso, até este ponto podem estar perdidos, pois apesar de já terem programado enormes Bancos de Dados, aplicações para Web, etc, nunca ouviram falar em nada do que foi tratado até este ponto. Isso se deve porque o Delphi emprega recursos nativos (a famosa VCL – Visual Component Library), que permitem um desenvolvimento mais complexo e ágil omitindo tais códigos. Mas isso tudo é assunto para um outro artigo.
Voltando ao enfoque principal, além das inúmeras mensagens que o Windows® emprega para seu próprio uso, ele permite que o usuário (nós programadores) defina até 31744 mensagens para uso particular! Isso mesmo: são exatamente 31744 mensagens que são raramente utilizadas!
Para enviar estas mensagens o Windows® possui uma constante global chamada WM_USER (que é equivalente ao valor hexadecimal 400), a partir deste valor podemos somar até 31743 (ou $7BFF) que compreende a extensão permitida pelo Windows®, de acordo com a tabela abaixo:
Número | Intervalo (hexadecimal) | Função |
1 | 0 até WM_USER-1 | Mensagens reservadas para uso do Windows® |
2 | WM_USER até $7FFF | Mensagens inteiras reservadas para uso por classes privadas |
3 | $8000 até $BFFF | Mensagens reservadas para uso futuro do Windows® |
4 | $C000 até $FFFF | Mensagens de string para uso de aplicativos |
5 | Maior que $FFFF | Mensagens reservadas para uso futuro do Windows® |
Na próxima parte deste artigo codificarei um exemplo bem simples utilizando este sistema de mensagens.
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009