Processar a mensagem de WM_DRAWITEM

Uma caixa de combinação owner-drawn envia a mensagem WM_DRAWITEM para seu procedimento de caixa de diálogo ou janela de pai cada vez que o aplicativo deve redesenhar um item da lista. O lParam parâmetro aponta para uma estrutura DRAWITEMSTRUCT que identifica o item de lista e controle. Ele também contém informações necessárias para pintar o item.

O exemplo de criação de uma caixa de diálogo Square Meal exibe o texto de item de lista e o bitmap associado com o grupo de alimentos. Se o item tem o foco, ela também desenha um Retangular de foco. Antes de exibir o texto, o exemplo define as cores de primeiro plano e plano de fundo, com base no item selecionado. Porque a caixa de combinação tem o estilo CBS_HASSTRINGS, a caixa de combinação mantém o texto para cada item da lista que pode ser recuperada usando a mensagem CB_GETLBTEXT.

Os bitmaps usados para o item da lista dependem do grupo de alimentos. InitGroupListusa a CB_SETITEMDATA mensagem para associar uma constante a cada item de lista, identificando o grupo alimentar correspondente. O procedimento janela usa esse valor, contido no itemData membro da estrutura DRAWITEMSTRUCT , para determinar quais bitmaps para exibir. O sistema usa dois bitmaps para cada símbolo de grupo de alimentos: um bitmap monocromático com o operação de varredura SRCAND para apagar a região irregular por trás da imagem e um bitmap de cor com o operação de varredura SRCPAINT para pintar a imagem.