Friday, March 9, 2018

Janelas

** Janelas **
Bom, todo mundo aqui sabe que um sistema operacional pode funcionar sem interface gráfica. Não é isso o que eu quero discutir.
***
Pode parecer que lidar com janelas é uma coisa fácil mas não é.
Pra mim, o maior problema em lidar com janelas são as mensagens, isso mesmo, janelas recebem mensagens e são afetadas por essas mensagens e o que afeta a janela pode afetar o processo ao qual ela pertence.
Essas mensagens podem vir de vários lugares. Podem vir do teclado, do mouse, de um toque na tela ou simplesmente enviadas por rotinas de envio de mensagens.
Uma mensagem afeta uma janela específica que normalmente é a janela com o foco de entrada.
Um procedimento de janela é a rotina que recebe essas mensagens e efetua alguma ação de acordo com o número da mensagem.
Desde o começo do projeto é bom que saibamos que os dispositivos de entrada enviarão mensagens que afetarão as janelas. Não importa o tamanho do seu projeto, a questão é que se ele for usar interface gráfica, precisa se preocupar com essa transferência de mensagem entre o driver de dispositivo e o procedimento de janela que irá receber essa mensagem.
Para 'facilitar' a coisa criamos filas de mensagens. A mensagem que saiu do teclado vai parar em alguma fila de mensagens, e as vezes digitamos mais rápido do que a capacidade do aplicativo de processar essas mensagens, então as mensagens vão se enfileirando, esperando cada uma a sua vez.
***
A parte divertida é pintar as janelas, mover as janelas ... isso é mais simples de entender e mais divertido, mas também não é fácil.
Quando o assunto é janela, devemos lembrar que elas consomem muita memória e tempo de processamento.
O tempo que os elementos gráficos demoram para aparecerem na tela é o ponto chave. Esse tempo é afetado por inúmeras variáveis.
Quem deseja fazer um sistema operacional com interface gráfica deve se preocupar com ela desde o início do projeto.

No comments:

Post a Comment

Projeto Pessoal

Meu projeto pessoal de Informática. Você pode ver mais sobre meu projeto pessoal na minha página no Facebook. https://facebook.com/fredno...