Discussão do artigo "Interfaces Gráficas II: Os Elementos Linha de Separação e o Menu de Contexto (Capítulo 2)"

 

Novo artigo Interfaces Gráficas II: Os Elementos Linha de Separação e o Menu de Contexto (Capítulo 2) foi publicado:

Neste artigo, nós vamos criar o elemento linha de separação. Será possível usá-lo não só como um elemento de interface independentes, mas também como uma parte de diversos outros elementos. Depois disso, nós teremos todos os recursos necessários para o desenvolvimento da classe do menu de contexto, que também serão considerados neste artigo em detalhe. Acrescentando, nós vamos apresentar todos os incrementos necessários à classe, que é a base para armazenar os ponteiros para todos os elementos da interface gráfica da aplicação.

Se compilarmos todos os arquivos e carregar o programa ao gráfico, os elementos de menu do contexto irá mudar sua aparência quando o cursor do mouse estiver pairando sobre eles.

Fig. 5. Teste dos elementos do menu de contexto.

Fig. 5. Teste dos elementos do menu de contexto.


Autor: Anatoli Kazharski

 
Existe um mecanismo para vincular/delegar ações/comandos a diferentes controles? Por exemplo, a um botão na barra de ferramentas e a um item do menu de contexto? O padrão "command" seria adequado para isso. Ao mesmo tempo, é possível implementar o mecanismo de desfazer/refazer por meio do armazenamento no histórico de comandos executados, salvando os valores iniciais do destinatário.

Também é bom introduzir o conceito de um modelo, que é ouvido por este ou aquele controle (observador de padrão). Isso permitirá que todos os controles da interface reajam de forma transparente às alterações no modelo.

Por exemplo, até que o modelo do gráfico não tenha sido inicializado pelo usuário, todos os controles relacionados ao gerenciamento do gráfico têm uma visualização desativada. Isso elimina a necessidade de acesso direto aos controles e à lógica responsável por seu comportamento em determinados casos.
 
Igor Volodin:
Existe um mecanismo para vincular/delegar ações/comandos a diferentes controles? Por exemplo, a um botão na barra de ferramentas e a um item do menu de contexto? O padrão "command" seria adequado para isso. Ao mesmo tempo, é possível implementar o mecanismo de desfazer/refazer por meio do armazenamento no histórico de comandos executados, salvando os valores iniciais do destinatário.

Também é bom introduzir o conceito de um modelo, que é ouvido por este ou aquele controle (observador de padrão). Isso permitirá que todos os controles da interface reajam de forma transparente às alterações no modelo.

Por exemplo, até que o modelo do gráfico não tenha sido inicializado pelo usuário, todos os controles relacionados ao gerenciamento do gráfico têm uma visualização desativada. Isso elimina a necessidade de acesso direto aos controles e à lógica responsável por seu comportamento em determinados casos.

Na versão atual da biblioteca, em alguns casos, a troca de comandos entre elementos é implementada por meio de eventos personalizados. O próximo artigo falará mais sobre isso.

Quanto aos mecanismos adicionais, tudo é negociável. Após a publicação de toda a série, você poderá examinar todos os itens do esquema e fazer uma lista do que deve ser alterado ou adicionado, se houver argumentos que justifiquem por que seria melhor/confiável/conveniente, etc.

Talvez eu tenha entendido mal a pergunta. Então você precisa de esclarecimentos sobre o que exatamente precisa obter e como deve ser.

 
Por que uma matriz de variáveis?
color             m_area_color_array[];
E no construtor CContextMenu() você precisa definir a variável m_item_Ysize para um tamanho maior que zero por padrão.