Caixas de combinação Owner-Drawn

Um aplicativo pode criar uma caixa de combinação proprietário-desenhado para assumir a responsabilidade de pintura de itens de lista. A caixa de diálogo ou janela de pai de uma caixa de combinação owner-drawn (o proprietário) recebe mensagens de WM_DRAWITEM quando uma parte da caixa de combinação precisa ser pintadas. Uma caixa de combinação owner-drawn pode listar informações diferente de, ou além, seqüências de caracteres de texto. Caixas de combinação Owner-drawn podem ser de qualquer tipo. No entanto, o Controlarar de editar na caixa de combinação simples ou soltar-para baixo só pode exibir texto, enquanto o proprietário pinta o campo seleção em um caixa de listagem de soltar-para baixo.

O proprietário de uma caixa de combinação owner-drawn deve processo a mensagem WM_DRAWITEM. Esta mensagem é enviada sempre que uma parte da caixa de combinação deve ser redesenhada. O proprietário pode ser necessário processar outras mensagens, dependendo os estilos especificados para a caixa de combinação.

Um aplicativo pode criar uma caixa de combinação owner-drawn, especificando o CBS_OWNERDRAWFIXED ou CBS_OWNERDRAWVARIABLE estilo. Se todos os itens da lista na caixa de combinação são a mesma altura, como seqüências de caracteres ou ícones, um aplicativo pode usar o estilo CBS_OWNERDRAWFIXED. Se itens de lista são de altura variável, bitmaps de tamanho diferente, por exemplo, um aplicativo pode usar o estilo CBS_OWNERDRAWVARIABLE.

O proprietário de uma caixa de combinação owner-drawn pode processar uma mensagem WM_MEASUREITEM para especificar as dimensões de itens de lista na caixa de combinação. Se o aplicativo cria a caixa de combinação usando o estilo CBS_OWNERDRAWFIXED, o sistema envia a mensagem WM_MEASUREITEM apenas uma vez. As dimensões especificadas pelo proprietário são usadas para todos os itens da lista. Se o estilo CBS_OWNERDRAWVARIABLE é usado, o sistema envia uma mensagem WM_MEASUREITEM para cada item de lista adicionado à caixa de combinação. O proprietário pode determinar ou definir a altura de um item da lista a qualquer momento, usando as mensagens CB_GETITEMHEIGHT e CB_SETITEMHEIGHT , respectivamente.

Se as informações exibidas em uma caixa de combinação owner-drawn incluem texto, um aplicativo pode manter controle de texto para cada item da lista, especificando o estilo CBS_HASSTRINGS. Caixas de combinação com o estilo CBS_SORT são classificadas com base no presente texto. Se uma caixa de combinação é classificada e não o estilo CBS_HASSTRINGS, o proprietário deve processo a mensagem WM_COMPAREITEM.

Em uma caixa de combinação owner-drawn, o proprietário deve manter controle de itens de lista que contenha informações diferente de ou em adição ao texto. Uma maneira conveniente de fazer isto é salvar o identificador das informações como dados de item. Para obter mais informações sobre dados de item, consulte Dados associados a itens de lista. Para liberar objetos de dados associados a itens em uma caixa de combinação, o proprietário pode processar a mensagem WM_DELETEITEM.

Para obter um exemplo de uma caixa de combinação owner-drawn, consulte Criando uma caixa de combinação de Owner-Drawn.

Index