Neste topico, ensinarei como adicionar uma barra de menus (com menus, obviamente) ao programa. Neste momento, colocarei menus simples, apenas com comandos simples. Ha outros componentes que podem ser adicionados aos menus, mas serao tratados em topicos futuros.Vamos la.Barra de menusTudo comeca com a barra de menus. Naturalmente, e la que ficam os menus. E, naturalmente, fica no topo da janela:FXMenuBar *menuBar = new FXMenuBar(this, LAYOUT_FILL_X|FRAME_RAISED);Percebam que ela pode ser criada localmente, o proprio FOX se encarrega de libera-la depois. Alem disso, lembrem-se que a localizacao padrao e no topo da janela, portanto nao precisei passar LAYOUT_SIDE_TOP.Isso cria o espaco ideal para os menus. Aqui, criarei apenas dois, "Arquivo" e "Editar", apenas para exemplificar. Nao e um processo complicado. Pelo contrario, e bem simples.Adicionando menusOs menus precisam ser declarados com escopo de classe. Entao, na declaracao da classe, temos:protected: FXMenuPane *_fileMenu; FXMenuPane *_editMenu;Agora, vamos criar e preencher os menus. Neste primeiro exemplo, do menu "Arquivo", vou colocar e explicar linha por linha. No segundo, o menu "Editar", vou colocar tudo de uma vez so para explicar a forma como eu gosto de criar os menus.Menu Arquivo_fileMenu = new FXMenuPane(this);Cria o painel onde ficarao os itens do menu. Os dois parametros do construtor sao a janela pai e as opcoes, que nao e necessario informar.new FXMenuCommand(_fileMenu, "&Carregar imagem...", 0, 0, 0);Cria um comando de menu. Os principais parametros sao:Menu onde vai aparecer. Na verdade, pode ficar em um FXComposite qualquer (e, de fato, eu coloquei um sem querer na propria janela, ficou algo bizarro). Como estamos criando menus, e bom que fique em um FXMenuPanel. Neste caso, no menu "Arquivo".Texto do comando. O caractere & indica que a proxima letra ficara sublinhada, para acesso atraves de Alt+. Neste caso, Alt+C acionara esse comando. E meio Uindous, mas muito melhor que em Java (um setMnemonic() horroroso).Icone. FXMenuCommands podem ter um icone associado, indique aqui. Ja falei sobre icones aqui.Alvo do evento.ID da mensagem. A serie sobre Tratamento de Eventos explica essa parte referente a esses dois ultimos parametros.O ultimo parametro sao as opcoes, novamente desnecessario informar.E caso nao tenha ficado claro pelo nome da classe: FXMenuCommands lancam eventos do tipo SEL_COMMAND. Isso significa que no mapa de mensagens do tratador (seja a propria janela ou seja la quem for) vai aparecer algo como:FXMAPFUNC(SEL_COMMAND, FoxTutorialMainWindow::ID_LOAD_IMAGE, FoxTutorialMainWindow::onCmdLoadImage),Continuando:new FXMenuSeparator(_fileMenu);Apenas um separador. Desenha uma linha para separar os comandos em secoes.new FXMenuCommand(_fileMenu, "&Sair\tCtrl+Q\tEncerrar o aplicativo", 0, getApp(), FXApp::ID_QUIT);Mais um comando, para fechar o aplicativo. Desta vez fiz com que esse comando lancasse um evento para exemplificar. Ja falei sobre como fechar o aplicativo atraves de um comando aqui.A unica observacao adicional e quanto ao texto do comando. Assim como o texto dos botoes, este tambem e dividido em tres secoes, separadas pelo caractere de tabulacao:A primeira e o texto que sera exibido. Natural e praticamente obrigatorio.A segunda sao as teclas de atalho (aceleradores). Neste caso, coloquei Ctrl+Q para fechar o aplicativo. Opcional.A terceira e o texto que aparecera na barra de status. Falaremos dela no futuro. Opcional.Bom, isso preenche o nosso menu "Arquivo". Vamos, agora, adiciona-lo a barra