لا يظهر شريط المهام الإخفاء التلقائي عند تكبير التطبيق الخاص بي

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

  •  02-07-2019
  •  | 
  •  

سؤال

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

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

المحلول

لقد وجدت المشكلة.كان التطبيق الخاص بي يتعامل مع رسالة WM_GETMINMAXINFO، وكان يتجاوز القيم الموجودة في سجل المعلمة MINMAXINFO.تم تضخيم القيم الموجودة في السجل بمقدار 7 (عرض الحدود) بدقة بكسل الشاشة.وهذا منطقي لأنه عند تكبيره، فإنه يدفع حدود النافذة إلى ما وراء الجزء المرئي من الشاشة.كما يقوم أيضًا بتعيين ptMaxPosition (النقطة التي يتم تعيين أصل النافذة عليها عند تكبيرها) إلى -7، -7.كان تطبيقي يضبط ذلك على 0،0، والحد الأقصى للارتفاع والعرض لحجم دقة الشاشة بالضبط (غير مضخم).لست متأكدا من سبب القيام بذلك؛لقد كتبه سلف.إذا قمت بالتعليق على هذا الرمز ولم تقم بتعديل بنية MINMAXINFO، فإن الإخفاء التلقائي يعمل.

أما لماذا، فأنا لست متأكدا تماما.من الممكن أن يكون اكتشاف شريط المهام "المخفي تلقائيًا" مرتبطًا بآلية معالجة رسائل WM_MOUSEMOVE، وليس لـ WM_NCMOUSEMOVE.نظرًا لأن تطبيقي يتسبب في إيقاف الحد الأقصى لحدودي مباشرةً أسفل الشاشة، كنت سأقوم بإنشاء أحداث WM_NCMOUSEMOVE؛مع ترك MINMAXINFO بمفرده، كنت سأقوم بإنشاء WM_MOUSEMOVE.

نصائح أخرى

يعتمد هذا على ما إذا تم تحديد خيار "الاحتفاظ بشريط المهام أعلى النوافذ الأخرى" في خصائص شريط المهام.إذا تم تحديده، فسيظهر شريط المهام.

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

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