سؤال

ولدي كائن، العاصمة، من نوع CDC وكنت ترغب في الحصول على كائن HDC.

وأنا أقرأ وثائق هنا ، ولكن لا أفهم حقا.

ويمكن للشخص أن توفر لي مع مثال مختصر / شرحا عن كيفية القيام بذلك؟

هل كانت مفيدة؟

المحلول

لقد operator HDC() تعريف الفئة CDC الذي يسمح للمترجم لتحويل كائن CDC لHDC ضمنا. وبالتالي إذا كان لديك CDC * وظيفة التي تأخذ HDC ثم أنت فقط dereference المؤشر وإرسالها إلى وظيفة.

نصائح أخرى

وعندما يكون لديك CDC الكائن سيتم تحويلها ضمنيا إلى HDC عند الضرورة:

CDC dc;
HDC hdc = dc; // HDC hdc = dc.operator HDC();

إذا كان لديك مؤشر إلى CDC الكائن ثم باستخدام وظيفة GetSafeHdc سوف تبدو أكثر واضحة:

CDC* pdc = SOME;
HDC hdc = pdc->GetSafeHdc();

وCDC هي فئة C ++ التي - لتقريب معقول - تلخص HDC، وهو مؤشر إلى سياق الجهاز

.

ووdocumenation التي تصل إلى يصف operator التحويل، وهو C ++ بناء الطبقات التي يمكن أن تقدم للسماح التحويل الضمني من مثيل فئة إلى نوع آخر. في هذه الحالة نتائج التحويل الضمني في التعامل الأساسي (HDC) الذي بتغليف المثال CDC.

ويمكنك إجراء تحويل باستخدام مثيل CDC كانت في أي مكان لا بد من تحويلها إلى HDC.

ومعظم ببساطة:

void f( const CDC& cdc )
{
    HDC hdc = cdc;

    // use hdc here
}
HDC hDC = dc;

وفقط إسناد ذلك.

CDC cdc = something.
HDC hdc = cdc;
if (hdc != 0)
{
  //success...
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top