استضافت .صافي وقت نافذة التركيز مشكلة والتناقضات

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

  •  03-07-2019
  •  | 
  •  

سؤال

لدينا التطبيق Win32 التي تستضيف .صافي وقت يفتح .صافي تمكنت من أشكال Win32 جزء من التطبيق.

هذه النوافذ هي دائما فتح نوافذ مشروط.

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

أيضا, في بعض الأحيان, إذا كان لنا أن فتح مثل هذا .صافي شكل ، ثم alt-tab إلى كلمة أو بعض التطبيقات الأخرى ثم انقر فوق على شريط المهام أيقونة التطبيق لدينا ، Win32 نافذة تظهر.وهذا بالطبع لا تزال تنتظر مشروط .صافي نافذة قريبة ، لذلك هو بالطبع غير صالحة للاستعمال.إذا كنا alt-tab إلى شيء آخر فقط التقليل من هذا الشيء الآخر ، ثم لدينا .صافي نافذة يظهر.

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

لا شك أننا قد فعلت شيئا خاطئا, ولكن أنا لا يمكن معرفة ما هي المشكلة.

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


تحرير: حسنا ، @سام, كنت على حق في أن لدينا بعض الاجهزة المختلفة في هذا الممر.كل من آلات تشغيل ويندوز XP SP3 لكن لي كان تشغيل ويندوز كلاسيك الموضوع ، تشغيل جديد XP موضوع.تغيير موضوع على الكمبيوتر الأخرى الكلاسيكية إزالة المشكلة ، ولكن تغيير مرة أخرى إلى XP موضوع لا تجعل من الظهور.

حتى الآن لدينا اثنين من آلات حيث العمل و العميل لا يزال لديه مشكلة ، على الرغم من العميل على ما يبدو يعمل موضوع الكلاسيكية.

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

المحلول

في الآونة الأخيرة لاحظت أن نافذة تعيين التركيز بشكل مختلف على نظام التشغيل windows vista Aero كما اعتادت أن تكون على XP.بدلا من الماضي تنشيط نافذة التطبيق تلقي التركيز النافذة الرئيسية سوف تتلقى التركيز على إعادة التنشيط.
الشيء المضحك هو تغيير فيستا إلى النمط القديم ويندوز الموضوع (الكلاسيكية أو الأساسية) ، سيتم التركيز تعيين نافذة الطفل الأخير الذي كان, كما في XP.

مشكلتك قد تكون مختلفة جدا, ولكن ربما كنت حصلت على مختلف إصدارات نظام التشغيل?

نصائح أخرى

هذه المشكلة يذكرني هذا WPF لديه نفس المشكلة مع عرض مربعات الحوار من الإطار الأصل.

سوف نفترض أنك الإشارة إلى الإصدار 2.0 .NET framework و كنت أصلي الوحدة التي يدعو .صافي الجمعية.

أي التحكم من نماذج windows (التي تشمل أيضا النماذج) ، تنفذ واجهة تسمى IWin32Window, الذي يعرض Win32 مقبض النافذة.

ما يمكنك فعله هو استخدام NativeWindow للاستماع WM_ACTIVATEAPP أو أي حدث من شأنه أن يشير إلى أن التطبيق الخاص بك التركيز وإرسال إشارة إلى .صافي نافذة للحصول على التركيز.

الخيار الآخر هو استخدام الأصلي الحوار التي تستضيف .صافي تحكم المستخدم بدلا من winforms (إذا كنت تستطيع).

لقد فعلت هذا من قبل دون الكثير من الزحام ، باستخدام C++\CLI, ولكن الآن لا تأتي إلى ذهني.ربما هذا من شأنه أن يكون نقطة انطلاق جيدة بالنسبة لك.

أذكر مساعدة صديق مع نفس المشكلة (لا أتذكر إذا كان فيها في .الصافي 2.0 أو 3.5)

أعتقد أن على النموذج الرئيسي يمكنك إنشاء أشكال جديدة و استخدام

Form2 form2 = new Form2();
form2.ShowDialog();

عرض مشروط المنبثقة الآن على ما يبدو يبدو أن الأسلوب ShowDialog لا تستخدم نموذج الاتصال ShowDialog مثل معالج لها في الافتراضي لذلك عليك القيام به

form2.ShowDialog(this);

هذه الطريقة تطبيق معرفتي يعلم ما تحمل للعودة ، وبالتالي يعود دائما إلى الرئيسية الخاصة بك من.

معلومات إضافية على ShowDialog شكل msdn:http://msdn.microsoft.com/en-us/library/w61zzfwe.aspx

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