Criação de quadro e filho Windows

Depois de registrar suas classes de janela, um aplicativo MDI pode criar seus windows. Primeiro, ele cria sua janela de quadro, usando a função CreateWindow ou CreateWindowEx . Depois de criar sua janela de quadro, o aplicativo cria sua janela de cliente, novamente usando o CreateWindow ou CreateWindowEx. O aplicativo deve especificar MDICLIENT como nome da classe da janela do cliente; MDICLIENT é uma classe de janela preregistered definida pelo sistema. O lpvParam parâmetro da CreateWindow ou CreateWindowEx deve apontar para uma estrutura CLIENTCREATESTRUCT . Essa estrutura contém membros descritos na tabela a seguir:

Membro Descrição
hWindowMenu Identificador para o menu de janela usado para controlar o filho MDI windows. Como janelas filho são criadas, o aplicativo adiciona seus títulos para o menu de janela como itens de menu. O usuário então pode ativar uma janela filho, clicando em seu título no menu janela.
idFirstChild Especifica o identificador de janela de filho MDI primeiro. A primeira janela de filho MDI criada é atribuída esse identificador. Janelas adicionais são criadas com identificadores de janela incrementado. Quando uma janela filho é destruída, o sistema imediatamente reatribui os identificadores de janela para manter seu intervalo contíguo.

Quando o título da janela filho é adicionado ao menu de janela , o sistema atribui um identificador para o janela filho. Quando o usuário clica em título um filho da janela, a janela do quadro recebe uma WM_COMMAND mensagem com o identificador na wParam parâmetro. Você deve especificar um valor para o membro de idFirstChild que não entra em conflito com identificadores de item de menu no menu da janela do quadro.

Procedimento de janela de quadro do MultiPad cria a janela do cliente MDI ao processar a mensagem WM_CREATE . O exemplo a seguir mostra como a janela do cliente é criada.

caso WM_CRE&ATE: {CLIENTCREATESTRUCT ccs; 
 
        / / Recuperar o identificador para o janela menu e atribuir o / / primeiro identificador janela filho. 
 
        CCS.hWindowMenu = GetSubMenu(GetMenu(hwnd), WINDOWMENU); 
        CCS.idFirstChild = IDM_WINDOWCHILD; 
 
        / / Criar a janela do cliente MDI. 
 
        hwndMDIClient = CreateWindow ("MDICLIENT", (LPCTSTR) NULL, WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL, 0, 0, 0, 0, hwnd, (HMENU) 0xCAC, hInst, amp (LPSTR); ccs); 
 
        ShowWindow (hwndMDIClient, SW_SHOW); 
    } quebra 

 

Títulos de janelas filho são adicionados à parte inferior do menu janela . Se o aplicativo adiciona seqüências de caracteres para o menu janela usando a função AppendMenu , essas cadeias de caracteres podem ser substituídas pelos títulos das janelas filho quando o menu de janela é redesenhado (sempre que uma janela filho é criada ou destruída). Um aplicativo MDI que adiciona seqüências de caracteres para sua janela menu, use a função InsertMenu e verificar que os títulos de janelas filho não têm substituído estas novas seqüências de caracteres.

Use o estilo WS_CLIPCHILDREN para criar a janela do cliente MDI para impedir que a janela de pintura sobre seu filho windows.

Index