Partilhar via


Alternando os estilos de uma janela criada por MFC

Na versão da função de WinMain MFC, o registra várias classes padrão da janela para você. à medida que você edita normalmente não WinMainMFC, essa função não oferece nenhuma oportunidade de alterar os estilos da janela da opção de MFC. Este artigo explica como você pode modificar os estilos de uma classe de preregistered de janela em um aplicativo existente.

Alterando os estilos em um novo aplicativo MFC

Se você estiver usando o Visual C++ 2,0 ou posterior, você pode alterar os estilos padrão da janela no assistente de aplicativo quando você criar seu aplicativo. Os recursos página da interface do usuário do assistente do aplicativo, você pode alterar estilo do quadro para suas janela principal e janelas filho MDI. Para um ou outro tipo da janela do, você pode especificar a espessura do quadro (espessa ou para diluir) e alguns dos seguintes:

  • Se a janela tem minimizar ou maximizar controles.

  • Se a janela aparece minimizada inicialmente, maximizado, ou nenhum.

Para o windows do quadro principal, você também pode especificar se a janela tem um menu do sistema. Para janelas filho MDI, você pode especificar se a janela da suporte aos painéis do separador.

Alterando os estilos em um aplicativo existente

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

Para alterar os atributos padrão da janela usados por um aplicativo da estrutura criado com o assistente de aplicativo, substitua a função de membro virtual de PreCreateWindow da janela. PreCreateWindow permite que um aplicativo acessar o processo de criação normalmente gerenciada internamente pela classe de CDocTemplate . A estrutura chama PreCreateWindow pouco antes de criar a janela. Modificando a estrutura de CREATESTRUCT passada a PreCreateWindow, o aplicativo pode alterar os atributos usados para criar a janela. Por exemplo, para assegurar que uma janela não use uma legenda, use o seguinte operação bit a bit:

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

O aplicativo de exemplo de CTRLBARS demonstra essa técnica para alterar atributos da janela. Dependendo do que seu aplicativo for alterado em PreCreateWindow, pode ser necessário chamar a implementação da classe base da função.

A seguinte discussão abrange os exemplos de SDI e o Casos MDI.

Os exemplos de SDI

Em um aplicativo de (SDI) da interface de um único documento, o estilo padrão da janela para a estrutura é uma combinação dos estilos de WS_OVERLAPPEDWINDOW e de FWS_ADDTOTITLE . FWS_ADDTOTITLE é um estilo MFC- específico que instrua 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, substitua a função de PreCreateWindow em sua classe derivada de CFrameWnd (que o assistente de aplicativo CMainFramenomenclatura). 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;
}

O código cria uma janela do quadro principal sem minimiza e maximizar os botões e sem uma borda importante. A janela é centralizada inicialmente na tela.

Os exemplos MDI

Mais trabalho é necessário em vez de para alterar o estilo da janela de uma janela filho em um aplicativo (MDI) de interface de documentos. Por padrão, um aplicativo MDI criado com o assistente do aplicativo usa a classe de CMDIChildWnd da opção definida em MFC. Para alterar o estilo da janela de uma janela filho MDI, você deve derivar uma nova classe de CMDIChildWnd e substituir todas as referências a CMDIChildWnd em seu projeto por referências à nova classe. Provavelmente, a única referência a CMDIChildWnd no aplicativo é encontrada na função de membro de InitInstance do seu aplicativo.

O estilo padrão da janela usado em um aplicativo MDI é uma combinação dos estilos de WS_CHILD, de WS_OVERLAPPEDWINDOW, e de FWS_ADDTOTITLE . Para alterar os atributos da janela das janelas filho MDI de um aplicativo, substitua a função de PreCreateWindow em 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);
}

O código cria janelas filho MDI sem um botão maximizar.

Que você deseja saber mais?

Consulte também

Conceitos

Estilos de janela com moldura (C++)