Exemplo do CTRLBARS: Ilustra as barras de controle personalizado
O exemplo CTRLBARS ilustra uma ampla variedade de opções de personalização para barras de controle:
Várias barras de controle em uma janela de quadro, seletiva como ocultar e Mostrar barras de controle e reorganização dinâmica dos controles ao longo da borda da janela do quadro.As barras de controle são alocadas espaço na janela do quadro de acordo com a sua ordem Z, que é inicialmente a ordem na qual são criados (consulte CMainFrame::OnCreate).CTRLBARS altera a ordem-Z do BAR de diálogo com o CWnd::SetWindowPos função. Ele oculta ou mostra um BAR de controle usando CWnd::ShowWindow. Sempre que CTRLBARS altera a ordem Z ou oculta ou mostra um BAR de controle, ele chama CFrameWnd::RecalcLayout depois para que a janela de imóveis é realocado no restante visível BAR de controle s.
Barras de ferramentas personalizadas, dinâmica reorganização dos botões na barra de ferramentas e adicionar controles (tais sistema autônomo uma caixa de combinação) a uma barra de ferramentas.CTRLBARS demonstra duas formas de personalizar uma barra de ferramentas.A primeira BAR de ferramentas, a BAR de ferramenta, altera a disposição dos botões entre um breve (5 botões) e longa (10 botões).CTRLBARS chama CToolBar::SetButtonInfo para cada botão de mapeá-lo para uma posição organizar organizar lado a lado a organizar lado a lado no bitmap da barra de ferramentas e uma identificação de comando. O segundo BAR de ferramentas, ilustra a BAR de estilo, substituindo um BAR de ferramentas botão (ou separador) com um controle — neste exemplo de uma caixa de combinação.CMainFrame::CreateStyleBar cria um separador de 100 pixels-toda barra de ferramentas.Em seguida, ele cria a caixa de combinação (IDW_COMBO) sistema autônomo um filho da barra de ferramentas e conjuntos a posição da caixa de combinação para levar o espaço ela apenas alocada para o separador.
Personalizado BAR de status, indicadores personalizados e envio de texto para a linha de mensagem.Para barras de status, a estrutura atualiza automaticamente um indicador CAP bloquear, NUM bloquear ou rolar bloquear se você especificar, por exemplo, ID_INDICATOR_CAPS sistema autônomo uma das identificações passadas o indicadores[] array para CStatusBar::SetIndicators. CTRLBARS ilustra estendendo os indicadores de BAR de status padrão com o estado de sobreposição (se), que o usuário alterna com a tecla INSERT.Isso exige um manipulador de mensagens para o ID_TOGGLE_INSERT comando (mapeado para o VK_INSERT chave) e uma seqüência de recurso (ID_INDICATOR_OVR) para o texto "Se" a ser exibido quando o modo de sobreposição estiver ativado.A identificação de recurso ID_INDICATOR_OVR é uma constante MFC predefinida.
BAR de diálogo, que é um controle BAR cujo layout é definido por um modelo de recurso caixa de diálogo.sistema autônomo ocorre com qualquer BAR de controle, sistema autônomo notificações de controles na BAR de diálogo são roteadas para o proprietário do BAR de diálogo, ou seja, a janela do quadro principal.Por exemplo, CMainFrame::OnSelChangePalette é o manipulador para o CBN_SELCHANGE notificação do controle de caixa de combinação em uma BAR de diálogo.CMainFrame também tem manipuladores para duas das três caixas de seleção de Mostrar/ocultar (Estilos and Paleta).Nenhum manipulador precisa ser escrito para a terceira caixa de seleção, Mostrar/ocultar barra de ferramentas, desde que a estrutura fornece o manipulador padrão de ID_VIEW_TOOLBAR.
Flutuante paleta da ferramenta, que se comporta sistema autônomo uma barra de ferramentas, mas exibe uma matriz bidimensional de botões de ferramenta e flutua sistema autônomo uma janela sem janela restrita acima da janela do quadro de proprietário.A paleta de ferramentas flutuante é implementada em uma classe reutilizável, CPaletteBar, derivado de CToolBar. A derivação de CToolBar Fornece CPaletteBar com o comportamento do botão de barra de ferramentas.O comportamento de paleta específica implementado em CPaletteBar inclui:
Flutuante (WS_POPUP) estilo da janela.
Organização bidimensional dos botões de ferramenta em linhas e colunas: criação, pintura e teste de hit botão.
Fino (sem texto) BAR de título.
Paleta móvel usando um acompanhamento retângulo.
CTRLBARS também ilustra o uso ON_COMMAND_EX e ON_UPDATE_COMMAND_UI_RANGE. Muitas das opções de personalização de BAR de controle ilustradas CTRLBARS são discutidas em Observação técnica 31.
Observação de segurança: |
---|
Este código de exemplo é fornecido para ilustrar um conceito e não deve ser usado em aplicativos ou sites da Web, pois ele não pode ilustrar sistema autônomo práticas de codificação mais seguras.Microsoft sistema autônomo sumes nenhuma responsabilidade por danos incidentais ou conseqüenciais deve o código de exemplo ser usado para fins diferentes de sistema autônomo se destina. |
Para obter exemplos e instruções para instalá-los:
Sobre o Visual Studio Ajuda menu, clicar Exemplos.
Para obter mais informações, consulte Localizando arquivos de exemplo.
A versão mais recente e a lista completa das Exemplos está disponível online a partir de O Visual Studio 2008 Exemplos página.
Você também pode localizar exemplos no disco rígido do seu computador.Por padrão, exemplos e um arquivo Leiame são copiados para uma pasta sob \programa Files\Visual Studio 9.0\Samples\.Para edições Express do Visual Studio, todos os exemplos estão localizados online.
Criando e executando o exemplo
Para criar e executar a amostra CTRLBARS
Abra a solução Ctrlbars.sln.
Sobre o Compilação menu, clicar Compilação.
No menu Debug, clique em Start Without Debugging.
Quando você executa o CTRLBARS pela primeira vez, os diversos controles são visíveis.
Uma BAR de ferramentas com 5 botões encontra-se imediatamente abaixo da BAR de menus.O primeiro botão de (seta espesso-para cima) alterna a barra de ferramentas organização entre "Curta" (5 botões) e "Long" (botões de 10).Os botões sempre estão inativo, exceto este primeiro Curto/longo botão e o Ajuda botão, que abre o Sobre box.
Uma segunda barra de ferramentas está imediatamente abaixo da primeira barra de ferramentas.Isso BAR de ferramentas, chamada BAR do estilo, é onde você especifica um dos seguintes estilos de alinhamento de texto — esquerda, centralizado, direita ou justificado.Selecionando um dos estilos não tem efeito Outros que ao alterar o estado da BAR do estilo.
A BAR de status consiste na parte inferior da janela.
Uma paleta flutuante, com um conjunto de 3, 4 de botões de ferramenta se encontra na parte superior da janela.
A BAR de diálogo consiste na borda esquerda da janela.É um BAR de diálogo porque o layout desta BAR de controle é definido em um recurso de modelo de caixa de diálogo (IDD_VIEW_SELECT).
The Modo de exibição menu lhe permite ocultar ou mostrar qualquer dos primeiros quatro das barras de controles.O BAR de diálogo fique sempre visível.O estado de Ocultar/Mostrar do Ferramentas, Estilos, and Paleta BARs de controle é imediatamente refletidas no Mostrar/ocultar as caixas de seleção na BAR de diálogo.Você também pode ocultar ou mostrar uma do Outros barras para controlar, alternando sua caixa de seleção.
Com o Dlg BAR superior comando a Modo de exibição menu, você pode reorganizar as BARs de controle para que o BAR de diálogo está na parte superior da ordem Z das BARs de controle.Quando o BAR de diálogo está na parte superior, ele estende ao longo da borda esquerda inteira da janela, exceto para as BARs de menu e título.As extremidades esquerdas de toque duas BARs de ferramentas do BAR de diálogo.Quando o BAR de diálogo é retornado para sua posição original da ordem Z (após todas as BARs de controle), na parte superior do BAR de diálogo toca a borda inferior da segunda BAR BAR de ferramentas e a parte inferior da BAR de diálogo toca a borda superior da BAR de status.Isso reflete o algoritmo básico que barras de controle são alocadas janela imóveis em uma base primeiro chegar, primeiro-serve.
The Estilo menu permite que você selecionar um dos estilos de alinhamento de quatro texto — esquerda, centralizado, direita ou justificado.Qualquer seleção feita é imediatamente refletida na caixa de combinação da BAR do estilo e no botão correspondente.Da mesma forma, você pode fazer uma seleção escolhendo um dos estilos na caixa de combinação estilo BAR ou pressionar um dos quatro botões.A nova seleção é refletida imediatamente nos Estados de outros controles e no Estilo menu.
The Paleta menu lhe permite alterar a organização de ferramenta da paleta de 3 por 4 para 2 - por - 6.
Quando você seleciona uma ferramenta do Paleta, o BAR de status mostra linha da mensagem "você selecionou o <type> ferramenta,"em que <type> indica qual das ferramentas de 12 selecionado.Essa seleção é refletida na caixa de combinação na BAR de diálogo.Você também pode selecionar uma ferramenta usando esta caixa de combinação.
A BAR de status, juntamente com a ferramenta selecionada mais recentemente, mostrando também mostra o status dos três chaves — INS, CAPS bloquear e NUM bloquear.
Palavras-chave
Este exemplo demonstra as seguintes palavras-chave:
AfxFormatString1; AfxGetApp; AfxIsValidAddress; AfxRegisterWndClass; AfxThrowResourceException; BitBlt; CBrush::CreateSolidBrush; CCmdUI::ContinueRouting; CCmdUI::Enable; CCmdUI::SetCheck; CCmdUI::SetText; CComboBox::AddString; CComboBox::Create; CComboBox::GetCurSel; CComboBox::GetLBText; CComboBox::SetCurSel; CControlBar::GetBarStyle; CControlBar::SetBarStyle; CDC::Attach; CDC::Detach; CDC::PatBlt; CDC::RectVisible; CDialogBar::Create; CDumpContext::GetDepth; CFont::CreateFontIndirect; CFrameWnd::LoadFrame; CFrameWnd::RecalcLayout; CFrameWnd::SetMessageText; CGdiObject::Attach; CObject::AssertValid; CObject::Dump; CRect::Height; CRect::InflateRect; CRect::SetRectEmpty; CRect::Width; CStatusBar::Create; CStatusBar::GetPaneInfo; CStatusBar::SetIndicators; CStatusBar::SetPaneInfo; CString::LoadString; CToolBar::CToolBar; CToolBar::CommandToIndex; CToolBar::Create; CToolBar::GetButtonInfo; CToolBar::GetItemID; CToolBar::GetItemRect; CToolBar::LoadBitmap; CToolBar::SetButtonInfo; CToolBar::SetButtons; CToolBar::SetHeight; CToolBar::SetSizes; CWinApp::InitInstance; CWinApp::OnIdle; CWnd::ClientToScreen; CWnd::CreateEx; CWnd::GetCapture; CWnd::GetClientRect; CWnd::GetDC; CWnd::GetDlgItem; CWnd::GetOwner; CWnd::GetParentFrame; CWnd::GetSafeHwnd; CWnd::GetStyle; CWnd::GetWindowRect; CWnd::Invalidate; CWnd::InvalidateRect; CWnd::OnCancelMode; CWnd::OnCreate; CWnd::OnLButtonDown; CWnd::OnMouseActivate; CWnd::OnMouseMove; CWnd::OnSysColorChange; CWnd::PreCreateWindow; CWnd::ReleaseDC; CWnd::SendMessage; CWnd::SetCapture; CWnd::SetFont; CWnd::SetWindowPos; CWnd::ShowWindow; CWnd::UpdateDialogControls; CWnd::UpdateWindow; CreateBitmap; CreateCompatibleBitmap; CreateCompatibleDC; CreateDIBitmap; CreatePatternBrush; CreatePen; CreateSolidBrush; DeleteDC; DeleteObject; FillRect; FindResource; FrameRect; FreeResource; GetActiveWindow; GetBValue; GetCapture; GetDC; GetDeviceCaps; GetGValue; GetNextWindow; GetObjectType; GetParent; GetRValue; GetStockObject; GetSysColor; GetSystemMetrics; GetVersion; GetWindow; HIBYTE; InvertRect; LOBYTE; LoadCursor; LoadIcon; LoadResource; LockResource; MAKEINTRESOURCE; OffsetRect; PatBlt; RGB; ReleaseCapture; ReleaseDC; SelectObject; SendMessage; SetActiveWindow; SetBkColor; SetCapture; SetROP2; SetRect; SetTextColor; StretchDIBits; UpdateWindow; free; lstrcpy; malloc; memcpy; memset
Observação: |
---|
Alguns exemplos, sistema autônomo esta, não foram modificados para refletir sistema autônomo alterações nos assistentes, bibliotecas e compilador Visual C++, mas ainda Demonstre sistema autônomo concluir a tarefa desejada. |