Janela filho

Uma janela filho tem o estilo estilo e limita-se à área do cliente da sua janela pai. Um aplicativo normalmente usa filho windows para dividir a área cliente de uma janela pai em áreas funcionais. Você cria uma janela filho, especificando o estilo estilo na CreateWindowEx função.

Um janela filho deve ter uma janela pai. A janela pai pode ser uma janela sobreposta, uma janela pop-up ou até mesmo outra janela filho. Você especifica a janela pai quando você chamar CreateWindowEx. Se você especifica o estilo de estilo na CreateWindowEx , mas não especificar uma janela pai, o sistema não cria a janela.

Uma janela filho tem uma área de cliente, mas não há outros recursos, a menos que explicitamente solicitados. Um aplicativo pode solicitar um barra de título, um menu de janela, minimizar e maximizar botões, uma borda e barras de rolagem para um janela filho, mas um janela filho não pode ter um menu. Se o aplicativo especifica um identificador de menu, ou quando ele registra a classe de janela da criança ou cria a janela filho, o identificador de menu é ignorado.

Posicionamento

O sistema sempre posiciona uma janela filho relativo para o canto superior esquerdo da área cliente da janela de seu pai. Nenhuma parte de uma janela filho nunca aparece fora das bordas de sua janela pai. Se um aplicativo cria um janela filho que é maior do que a janela pai ou posiciona um janela filho para que alguns ou todos os de janela filho se estende para além das fronteiras do pai, o sistema de clips do janela filho; ou seja, a parte fora da área de cliente da janela pai não é exibida. Ações que afetam o janela pai também podem afetar a janela filho, da seguinte forma.

Janela pai Janela filho
Destruído Destruídos antes que a janela pai é destruída.
Oculto Oculto antes a janela pai é oculto. Um janela filho é visível somente quando a janela pai é visível.
Mudou-se Mudou-se com área de cliente da janela pai. A janela filho é responsável pela pintura sua área de cliente depois da jogada.
Mostrado Mostrado depois que a janela pai é mostrada.

Recorte

O sistema não clip automaticamente uma janela filho da área de cliente da janela pai. Isso significa que a janela pai desenha sobre a janela filho se desenvolve qualquer desenho no mesmo local que a janela filho. No entanto, o sistema clip janela filho da área de cliente da janela pai se o janela pai tem o estilo WS_CLIPCHILDREN. Se a janela filho é cortada, o janela pai não pode desenhar sobre ele.

Uma janela filho pode sobrepor-se outro filho windows na mesma área de cliente. Um janela filho que compartilha a mesmo janela pai como uma ou mais outras janelas filho é chamado uma janela irmão. Janelas irmão podem desenhar na área de cliente da outra, a menos que uma das janelas filho tem o estilo WS_CLIPSIBLINGS. Se um janela filho tiver esse estilo, qualquer parte da janela que irmão que se encontra dentro da janela de filho é cortado.

Se uma janela tem o estilo WS_CLIPCHILDREN ou WS_CLIPSIBLINGS, ocorre uma pequena perda no desempenho. Cada janela ocupa recursos do sistema, portanto, um aplicativo não deve usar janelas filho indiscriminadamente. Para melhor desempenho, um aplicativo que precisa dividir logicamente sua janela principal deve fazê-lo no procedimento de janela da janela principal, em vez de usar janelas filho.

Relação com a janela pai

Um aplicativo pode alteração a janela pai de uma janela filho existente por chamado o SetParent função. Neste caso, o sistema remove a janela filho da área cliente da janela pai velho e move-lo para a área cliente da janela pai novo. Se SetParent especifica um identificador NULL, a área de trabalho janela torna-se a Novo janela pai. Neste caso, a janela filho é desenhada na área de trabalho, fora das fronteiras de qualquer outra janela. A GetParent função recupera um identificador para janela pai do janela uma criança.

Janela pai abandona uma porção de sua área de cliente para uma janela filho, e a janela filho recebe toda a entrada desta área. A classe de janela não precisa ser o mesmo para cada uma das janelas filho da janela pai. Isso significa que um aplicativo pode preencher uma janela pai com janelas filho que parecem diferentes e executar diferentes tarefas. Por exemplo, uma caixa de diálogo pode conter muitos tipos de controles, cada um uma janela de filho que aceita diferentes tipos de dados do usuário.

Um janela filho tiver apenas uma janela de pai, mas um pai pode ter qualquer número de janelas filho. Cada janela de filho, por sua vez, pode ter janelas filho. Nesta cadeia de windows, cada janela filho é chamada uma janela descendente do janela pai original. Um aplicativo usa a IsChild função para descobrir se uma determinada janela é um janela filho ou uma janela descendente de uma janela pai determinado.

A função EnumChildWindows enumera as janelas de filho de uma janela pai. Em seguida, EnumChildWindows passa o identificador para cada janela filho para uma função callback application-defined. Windows descendentes do janela pai determinado também são enumerados.

Mensagens

O sistema passa uma criança mensagens de entrada da janela diretamente para a janela filho; as mensagens não são passadas através da janela pai. A única exceção é se a janela filho tem foi desativada pela EnableWindow função. Neste caso, o sistema passa as mensagens de entrada que teria ido para a janela filho para o janela pai em vez disso. Isso permite que a janela pai para examinar as mensagens de entrada e ativar a janela de filho, se necessário.

Uma janela filho pode ter um identificador de número inteiro exclusivo. Identificadores de janela de filho são importantes ao trabalhar com janelas de Controlarar. Um aplicativo direciona a atividade do controle, enviando-lhe mensagens. O aplicativo usa o identificador de janela de filho do controle para direcionar as mensagens para o Controlarar. Além disso, um Controlarar envia mensagens de notificação para sua janela pai. Uma mensagem de notificação inclui o identificador do controle filho janela, que o pai usa para identificar qual controle enviou a mensagem. Um aplicativo especifica o identificador da janela filho para outros tipos de janelas filho definindo o hMenu parâmetro da CreateWindowEx função como um valor, em vez de um identificador de menu.

Index