Pergunta

programação em Win32, qual é a diferença entre o pai de uma janela e proprietário de uma janela? Eu pensei que tinha figurado para fora, em seguida, me deparei com este código:

SetWindowLong(handle, GWL_HWNDPARENT, foo);

Isso realmente define o proprietário da janela, não o pai - apesar da GWL_HWNDPARENT sendo usado. São os termos pai / proprietário intercambiáveis, ou há realmente alguma diferença?

Foi útil?

Solução

proprietário é a janela * responsável por um controlo ou de diálogo (por exemplo, responsável por criar / destruir a janela).

Pais é a próxima sênior janela * para um controle ou diálogo na cadeia de janela, mas não é realmente responsável por isso (não necessariamente se preocupam com seu ciclo de vida, etc). pai de uma janela também pode ser seu dono.

* Janela vs janela: Janela é uma janela real exibido na tela; janela é qualquer objecto com um HWND (inclui botões, painéis, etc.).

Outras dicas

A propriedade é uma relação entre duas janelas de nível superior, enquanto Pai é uma relação entre um nível superior e um WS_CHILD, ou um WS_CHILD e outro WS_CHILD.

O pai de um botão é a forma em que está, enquanto uma caixa de mensagem é de propriedade do formulário que mostrou-lo.

Leia este artigo da Microsoft Win32 Janela Hierarquia e Styles para obter uma compreensão muito mais clara de propriedade, Parenting, ZOrder, SetWindowLong, GetWindow e todos os outros bits desagradáveis ??da API Win32 para criar relacionamentos janela.

EDIT: parece que a Microsoft tirou esse conteúdo, aqui está outra razoável resumo de propriedade / Parenting .

post de Chen é o único a ler. O ponto chave para mim é que o estilo estilo deve ser utilizado na janela de criança. Você pode tentar criar uma janela filho e passar o identificador pai para CreateWindow (), mas se você não tem o estilo estilo definir as duas janelas terão a relação proprietário, não a / relacionamento pai-filho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top