Como posso obter um objeto HDC de um objeto CDC?
Pergunta
Eu tenho um objeto, dc, do tipo CDC e eu gostaria de ter um objeto HDC.
Eu li a documentação MSDN aqui , mas realmente não entendo isso.
Alguém pode me fornecer um breve exemplo / explicação sobre como fazer isso?
Solução
classe CDC tem operator HDC()
definido que permite que o compilador para converter um objeto CDC para HDC implicitamente. Portanto, se você tem CDC * e uma função que leva HDC então você só cancelar o ponteiro e enviá-lo para a função.
Outras dicas
Quando você tem objeto CDC
ele será convertido implicitamente HDC
quando necessário:
CDC dc;
HDC hdc = dc; // HDC hdc = dc.operator HDC();
Se você tem ponteiro para objeto CDC
em seguida, usando a função GetSafeHdc
vai olhar mais claro:
CDC* pdc = SOME;
HDC hdc = pdc->GetSafeHdc();
CDC
é uma classe C ++ que - para uma aproximação razoável -. Encapsula um HDC, que é um identificador para um contexto de dispositivo
O documenation que você conectar-se a descreve um operator
conversão, que é uma construção C ++ que as classes podem fornecer para permitir a conversão implícita de uma instância de uma classe para algum outro tipo. Neste caso, os resultados de conversão implícitos na alça subjacente (HDC) que os encapsulados de instância CDC
.
Você pode executar a conversão usando um qualquer instância CDC
eram ele precisa ser convertido para um HDC
.
A maioria simplesmente:
void f( const CDC& cdc )
{
HDC hdc = cdc;
// use hdc here
}
HDC hDC = dc;
Apenas atribuí-lo.
CDC cdc = something.
HDC hdc = cdc;
if (hdc != 0)
{
//success...
}