سؤال

وكتبت البرنامج الذي يرسم القطعة على خلفية سطح المكتب، تحت أيقونات سطح المكتب، وكان كل شيء جيد. لكنني تكشف عن وجود خلل غريب - كان برنامجي لا يعمل على بعض أجهزة الكمبيوتر الأخرى - أنها يعرض نفس سطح المكتب دون القطعة بعد بدء.

وبذلك، يكون أي شخص أي اكسبيرينسي، بعض المعرفة في هذا المجال؟ من فضلك ساعدنى! :)

و(لا أستطيع أن أجد أي كمبيوتر القريب، حيث القطعة لا يعمل في جهاز الكمبيوتر الخاص بي كل يعمل بشكل جيد. كتبت الكثير من برامج الاختبار، الذي رسم أي شيء على سطح المكتب مع أساليب بدلا محاولات، ولكن الاختبار يعرض شيئا أيضا في أصدقائي أجهزة الكمبيوتر.)

وطريقة الرسم:

وكتبت دلل، الذي يجد نافذة سطح المكتب (progman-> بالأطفال> الطفل)) ويخلق ربط وتثبيت الإجراء الإطار الخاصة لسطح المكتب. في إجراء إطار ط ربط WM_ERASEBKGND:

case WM_ERASEBKGND:
  HDC hdc = (HDC)wparam;
  PaintDesktop(hdc);
  WidgetPaint(hdc);
  return 1;

و// I تخطي في هذا القانون الحصول على وتحديد المناطق لقطة للرسم سريع. (حاولت كل المجموعات مع لقطة وبدون قطة)

وفي اختبارات أحاول أيضا لرسم القطعة في رسالة WM_PAINT مع نفس النتائج - كل يعمل بالفعل في وجهي، ولكنها تعمل وليس في كل أصدقائي

ومحدث: I حلها! :)

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

المحلول

وأنا حلها! انها كانت بسيطة وآلات 64 بت) لذلك أنا تجميع قانون بلدي ل 64 بت و القطعة بداية عمل جيدة!

و، أيضا -

PaintDesktop(hdc);

وسوف تنتج خلفية مشرقة جدا في WINDOWS7 (ويندوز فيستا) مع ايرو. (خلفية العضو يأتي سطع). يجب أن يكون

CallWindowProc(OldWndProc, WM_ERASEBKGND, wparam, lparam);

وسبب ذلك -. ايرو يعامل PaintDesktop () كما الطلاء المعتاد (أكثر من خلفية الشاشة الظاهري، وهذا هو نفس على سطح المكتب) مع الجمع اللون

والتحيات! :)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top