Alterar estilos de uma janela criado pelo MFC

Em sua versão do WinMain função, o MFC registra várias classes de janela padrão para você. Como você normalmente não edição WinMain, que função não dá a você nenhuma oportunidade de alterar os estilos de janela padrão MFC. Este artigo explica como você pode alterar os estilos de tal uma classe de janela pré-registrados em um aplicativo existente.

Alteração de estilos em um novo aplicativo do MFC

Se você estiver usando o Visual C++ 2.0 ou posterior, você pode alterar os estilos de janela padrão no Assistente do aplicativo quando você cria seu aplicativo.Na página de recursos de interface de usuário do Assistente do aplicativo, você pode alterar estilos de sua janela do quadro principal e janelas filho MDI.Para qualquer tipo de janela, você pode especificar sua espessura do quadro (grossa ou thin) e qualquer um dos seguintes:

  • Se a janela possui controles minimizar ou maximizar.

  • Se a janela é exibida inicialmente minimizada, maximizada, ou nenhuma.

Para janelas de quadro principal, você pode especificar se a janela tem um menu de sistema.Janelas MDI, você pode especificar se a janela oferece suporte a painéis de divisor.

Alterar estilos de uma aplicação existente

Se você estiver alterando atributos de janela em um aplicativo existente, siga as instruções no restante deste artigo em vez disso.

Para alterar os atributos de janela padrão usados por um aplicativo do estrutura criado com o Assistente de aplicativo, substituir PreCreateWindowfunção de membro virtual .PreCreateWindow permite que um aplicativo acessar o processo de criação normalmente gerenciado internamente pela CDocTemplate classe.A estrutura chama PreCreateWindow antes de ser a janela de criação. Modificando o CREATESTRUCT estrutura passado para PreCreateWindow, seu aplicativo pode alterar os atributos usados para criar a janela. Por exemplo, para garantir que uma janela não usa uma legenda, use a seguinte operação bit a bit:

// cs has been declared as CREATESTRUCT& cs;
cs.style &= ~WS_CAPTION;

The CTRLBARS aplicativo de exemplo demonstra essa técnica para alterar os atributos da janela.Dependendo do que seu aplicativo alterações PreCreateWindow, talvez seja necessário telefonar a implementação da classe base da função.

Discussão a seguir aborda o SDI caso e o Caso MDI.

O caso SDI

Em um aplicativo de interface (SDI) único documento, o estilo padrão da janela da estrutura é uma combinação do WS_OVERLAPPEDWINDOW and FWS_ADDTOTITLE estilos.FWS_ADDTOTITLE é um estilo de MFC específicos que instrui a estrutura para adicionar o título do documento para a legenda da janela.Para alterar os atributos da janela em um aplicativo de SDI substituir o PreCreateWindow função na sua classe derivada de CFrameWnd (que os nomes do Assistente de aplicativo CMainFrame). Por exemplo:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    // Call the base-class version
   if( !CFrameWnd::PreCreateWindow(cs) )
      return FALSE;

    // Create a window without min/max buttons or sizable border 
    cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_BORDER;

    // Size the window to 1/3 screen size and center it 
    cs.cy = ::GetSystemMetrics(SM_CYSCREEN) / 3; 
    cs.cx = ::GetSystemMetrics(SM_CXSCREEN) / 3; 
    cs.y = ((cs.cy * 3) - cs.cy) / 2; 
    cs.x = ((cs.cx * 3) - cs.cx) / 2;

   return TRUE;
}

Esse código cria uma janela do quadro principal sem botões Minimizar e maximizar e sem uma borda dimensionável.A janela é inicialmente centralizada na tela.

O caso MDI

Um pouco mais de trabalho é necessário para alterar o estilo da janela de uma janela filho em um aplicativo de interface (MDI) vários documentos.Por padrão, um aplicativo MDI criado com o Assistente de aplicativo usa o padrão de CMDIChildWnd classe definida no MFC.Para alterar o estilo da janela de uma janela filho MDI, você deve derivar uma nova classe de CMDIChildWnd e substitua todas as referências a CMDIChildWnd no seu projeto com referências à nova classe. Provavelmente, a única referência para CMDIChildWnd no aplicativo está localizado em seu aplicativo InitInstance função de membro.

O estilo de janela padrão usado em um aplicativo MDI é uma combinação do WS_CHILD, WS_OVERLAPPEDWINDOW, and FWS_ADDTOTITLE estilos.Para alterar os atributos da janela de janelas filho de um aplicativo MDI, substitua o PreCreateWindow função de na sua classe derivada de CMDIChildWnd. Por exemplo:

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
   // Create a child window without the maximize button 
    cs.style &= ~WS_MAXIMIZEBOX; 

   return CMDIChildWnd::PreCreateWindow(cs);
}

Esse código cria o filho MDI janelas sem um botão Maximizar.

O que você deseja saber mais sobre?

Consulte também

Conceitos

Estilos de janela de quadro (C++)