Как я могу получить объект HDC из объекта CDC?
У меня есть объект dc типа CDC, и я хотел бы получить объект HDC.
Я прочитал документацию MSDN здесь, но на самом деле не понимаю.
может ли кто-нибудь предоставить мне краткий пример/объяснение о том, как это сделать?
5 ответов
класс CDC имеет operator HDC()
определено, что позволяет компилятору неявно преобразовать объект CDC в HDC. Следовательно, если у вас есть CDC* и функция, которая принимает HDC, вы просто разыменуете указатель и отправите его в функцию.
когда у вас есть CDC
объект будет неявно преобразован в HDC
при необходимости:
CDC dc;
HDC hdc = dc; // HDC hdc = dc.operator HDC();
если у вас есть указатель на CDC
объект затем с помощью функции GetSafeHdc
будет выглядеть более ясно:
CDC* pdc = SOME;
HDC hdc = pdc->GetSafeHdc();
CDC
- это класс C++, который - в разумном приближении-инкапсулирует HDC, который является дескриптором контекста устройства.
документация, на которую вы ссылаетесь, описывает преобразование operator
, которая является конструкцией C++, которую классы могут предоставить, чтобы разрешить неявное преобразование из экземпляра класса в какой-либо другой тип. В этом случае неявное преобразование приводит к базовому дескриптору (HDC), который CDC
экземпляр инкапсулирует.
вы можете выполнять преобразование с помощью CDC
экземпляр везде, где он должен быть преобразован в HDC
.
наиболее просто:
void f( const CDC& cdc )
{
HDC hdc = cdc;
// use hdc here
}