استبدال عنصر تحكم النافذة مع آخر في وقت التشغيل

StackOverflow https://stackoverflow.com/questions/2426235

سؤال

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

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

ما أرغب في فعله هو - الكتابة فوق عنصر التحكم بمكافأة خاصة بي (ما يعادلها .NET. لتنفيذها، أخطط لكتابة مكتبة الطبقة في C # / إدارة C ++ واستيرادها إلى تطبيقي (الذي مكتوب في C ++ غير المدعوم).

أيضا، يمكن أن يكون هناك عدد تعسفي من مثيلات محرر النصوص.

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

المحلول

هذا يبدو الطريق معقد للغاية. مجرد استبدال wndproc (GWL_WNDPROC)، قم بإعادة توجيه أي شيء، ثم يبطل HWND. من شأنه أن يجبر إعادة رسم (WM_PAINT) والتي يمكنك التقاطها بعد ذلك. ربما لا يلاحظ المالك (ما لم يكن لديهم مدمن مخدرات كذلك، بالطبع)

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