Alterar os estilos de uma janela criado pelo MFC
Sua versão do WinMain função, MFC registra várias classes de janela padrão.Porque normalmente não editar do MFC WinMain, que a função não retorna 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 um aplicativo existente.
Alterando estilos em um novo aplicativo do MFC
Se você estiver usando o Visual C++ 2.0 ou posterior, você pode alterar estilos de janela padrão do Assistente de aplicativo quando você cria seu aplicativo.Na página de recursos de Interface do usuário do Assistente de aplicativo, você pode alterar estilos de janela do quadro principal e janelas filho MDI.Para qualquer tipo de janela, você pode especificar a espessura da moldura (fina ou grossa) e qualquer um dos seguintes:
Se a janela tem controles minimizar ou maximizar.
Se a janela é exibida inicialmente minimizada, maximizada, ou nenhum.
Para o windows de quadro principal, você pode especificar se a janela tem um Menu de sistema.Janelas de filho MDI, você pode especificar se a janela oferece suporte a painéis de divisão.
Alterando estilos em um aplicativo existente
Se você alterar os atributos de janela em um aplicativo existente, execute as instruções no restante deste artigo.
Para alterar os atributos de janela padrão usados por um aplicativo framework criado com o Assistente de aplicativo, substituir a janela PreCreateWindow função de membro virtual.PreCreateWindowpermite que um aplicativo acessar o processo de criação normalmente gerenciado internamente pelo CDocTemplate classe.O framework chama PreCreateWindow antes da criação da janela.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;
O CTRLBARS aplicativo de exemplo demonstra essa técnica para alterar os atributos de janela.Dependendo de seu aplicativo altera PreCreateWindow, pode ser necessário chamar a implementação da classe base da função.
Discussão a seguir aborda o caso SDI e o caso MDI.
Caso SDI
Em um aplicativo de interface (SDI) único documento, o estilo de janela padrão no framework é uma combinação da WS_OVERLAPPEDWINDOW e FWS_ADDTOTITLE estilos.FWS_ADDTOTITLE é um estilo específico de MFC que instrui o framework para adicionar o título do documento para a legenda da janela.Para alterar os atributos de janela em um aplicativo SDI, substituir o PreCreateWindow função em sua classe derivada de CFrameWnd (que os nomes do aplicativo assistente 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 de quadro principal sem botões Minimizar e maximizar e sem uma borda considerável.A janela inicialmente é centralizada na tela.
O caso MDI
É necessário um pouco de trabalho para alterar o estilo de janela de uma janela filho em um aplicativo de interface (MDI) documento várias.Por padrão, um aplicativo MDI criado com o Assistente de aplicativo usa o padrão 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 substituir todas as referências a CMDIChildWnd em seu projeto com referências à nova classe.Provavelmente, a única referência a CMDIChildWnd do 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 da estilo, WS_OVERLAPPEDWINDOW, e FWS_ADDTOTITLE estilos.Para alterar os atributos de janela do windows do filho do aplicativo MDI, substituir o PreCreateWindow função 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);
}
Esse código cria filho MDI windows sem um botão Maximizar.