Имам обект, dc, от тип CDC и бих искал да получа HDC обект.
Прочетох документацията на MSDN тук, но не наистина не го разбирам.
Може ли някой да ми даде кратък пример/обяснение как да направя това?
Имам обект, dc, от тип CDC и бих искал да получа HDC обект.
Прочетох документацията на MSDN тук, но не наистина не го разбирам.
Може ли някой да ми даде кратък пример/обяснение как да направя това?
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
}
Просто го задайте.
CDC cdc = something.
HDC hdc = cdc;
if (hdc != 0)
{
//success...
}