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?

Foi útil?

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...
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top