No topico anterior, falei especificamente sobre o mapa de mensagens. Neste topico, falarei sobre alguns tipos de mensagem que podem ser disparados.Talvez esse topico seja um pouco macante, porque existem diversos tipos. Vou ser breve em cada um deles, pois sao mais uma questao de pratica que de teoria.Outra caracteristica deste topico e que, apesar de no FOX Toolkit nao haver nenhuma distincao de categoria de eventos (eventos de mouse, teclado, janela etc), vou dividi-los aqui dessa forma para facilitar a leitura.Os tipos de mensagem estao definidos em fxdefs.h. Nao vou copia-lo aqui porque sao 80 tipos de mensagem (sem contar o primeiro, SEL_NONE, e o ultimo, SEL_LAST). Estao definidos dentro da enumeracao FXSelType, e todos tem o prefixo SEL_. Sendo 80, e muito provavel que a maioria deles nao seja utilizada. Eu, pelo menos, nao utilizo muitos. Portanto, vou limitar a minha explicacao aqueles que eu ja usei, ou que pelo menos sei para que servem.Vou tentar tambem seguir a ordem em que sao declarados na enumeracao. Ainda, vou agrupar eventos muito semelhantes ou complementares. Comecemos entao a analisa-los.Eventos de tecladoSEL_KEYPRESSSEL_KEYRELEASEEm se tratando de teclado, ha somente esses dois eventos a serem tratados. Uma tecla foi pressionada (SEL_KEYPRESS), uma tecla foi liberada (SEL_KEYRELEASE).Apenas uma observacao: se o programa nao se importar com qual foi a tecla pressionada/liberada, nao ha nada extra. Mas se a tecla for importante, e necessario incluir o arquivo fxkeys.h. Nele estao as definicoes dos valores de todas as teclas que podem ser pressionadas.Eventos de mouseSEL_LEFTBUTTONPRESSSEL_LEFTBUTTONRELEASEBotao esquerdo do mouse pressionado/liberado.SEL_MIDDLEBUTTONPRESSSEL_MIDDLEBUTTONRELEASEBotao do meio do mouse pressionado/liberado.SEL_RIGHTBUTTONPRESSSEL_RIGHTBUTTONRELEASEBotao direito do mouse pressionado/liberado.SEL_MOTIONSEL_ENTERSEL_LEAVEEsses tres tipos de mensagem referem-se ao movimento do mouse relativo ao objeto que lanca o evento. Quando um mouse entra na area do objeto, este lanca um evento do tipo SEL_ENTER. Quando o mouse se move dentro de um objeto, este lanca um evento do tipo SEL_MOTION. Finalmente, quando o mouse sai da area do objeto, este lanca um evento do tipo SEL_LEAVE.SEL_CLICKEDSEL_DOUBLECLICKEDSEL_TRIPLECLICKEDSEL_MOUSEWHEELClique, duplo clique, triplo clique e movimento da roda do mouse. Nao lembro de ter usado nenhum dos tres primeiros.Ja o tratamento do evento da roda do mouse e meio esquisito; no momento nao me recordo como e feito, mas futuramente falaremos disso.Eventos de janelaSEL_PAINTIndica que um objeto deve ser redesenhado. Muito util quando se tem um canvas: define-se um callback que desenha no canvas, que e executado sempre que este lanca um evento do tipo SEL_PAINT.SEL_CONFIGUREEste evento e lancado quando a janela e redimensionada. Este aqui e utilizado, por exemplo, quando ha uma janela com um canvas OpenGL que, ao ser redimensionada, precisa reajustar a viewport e as matrizes de visualizacao para evitar distorcoes na imagem (quem trabalha com OpenGL sabe do que estou falando).SEL_UPDATEEste evento e lancado constantemente pelo objetos. Ao capturar um evento destes, e possivel alterar o estado do objeto que o lancou. Por exemplo, um botao deve permanecer inativo enquanto nao houver nenhum arquivo aberto; a partir do momento em que abre-se um arquivo, este botao deve ser ativado. Isto pode ser feito capturando-se o evento do tipo SEL_UPDATE que ele lanca.Execucao