تعرف على الألوان المستخدمة عند استخدام حزمة ميزات MFC بأسلوب Office 2007

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

  •  08-06-2019
  •  | 
  •  

سؤال

أقوم بتحديث بعض رموز C++ القديمة الخاصة بنا لاستخدام "حزمة ميزات MFC" التي أصدرتها Microsoft لـ Visual Studio 2008.لقد استخدمنا الفئات الجديدة لاشتقاق تطبيقنا من CFrameWndEx، ونقوم بتطبيق أنماط Office 2007 لمنح تطبيقنا مظهرًا أكثر حداثة.وهذا يمنحنا عناوين النوافذ المملوءة بالتدرج، وأشرطة الحالة، وما إلى ذلك، واستخدام أشرطة أدوات الشريط.

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

لقد قمت بالبحث عن الوثائق والويب ولم أجد أي شيء بعد.هل يعرف أحد كيفية العثور على هذه المعلومات؟

[يحرر]

على وجه الخصوص، نحتاج إلى معرفة الألوان المستخدمة في وقت التشغيل.يمكنك تغيير مظهر التطبيق الخاص بك في وقت التشغيل باستخدام الوظيفة الثابتة الجديدة CMFCVisualManager::SetDefaultManager.

توضح لك صفحة msdn التالية نوع الأنماط المتوفرة، وخاصة مظهر Office2007:رابط إلى ام اس دي ان

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

المحلول

هل بحثت في كود مصدر MFC، والذي ستجده في شيء مثل

C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\src\mfc

نصائح أخرى

يبدو أن CMFCVisualManager يقدم عدة طرق للحصول على معلومات الألوان، على سبيل المثال.

cmfcvisualmanager :: getSmartDockingBaseGuidecolors () cmfcvisualmanager :: getToolbarhighlightcolor ()

ألقِ نظرة على مستندات MSDN الخاصة بـ CMFCVisualManager.

اقتراح جيد، ولكن لسوء الحظ فإنهم يعيدون ظلالًا مختلفة من اللون الرمادي، عندما أقوم حاليًا بتشغيل تطبيقي بالنمط CMFCVisualManagerOffice2007::Office2007_LunaBlue

من المزعج أن مساعدة msdn "قيد الإنشاء" لذا لا تخبرك حتى بما يفترض أن تفعله!

afxGlobalData يحتوي على بعض المعلومات المفيدة حول الألوان والفرش والخطوط الحالية المستخدمة بواسطة MFC Features Pack.على وجه الخصوص أنا استخدم afxGlobalData.m_clrBarFace عند رسم خلفيات شريط التحكم الخاصة بي.

(لاحظ أنني لست أمام جهاز الكمبيوتر الخاص بالعمل، لذا فإن بناء الجملة أعلاه غير واضح.)

أعتقد أنه يمكنك استخدام محرر الصور المفضل لديك واختيار الألوان من لقطة الشاشة.

"أعتقد أنه يمكنك استخدام محرر الصور المفضل لديك واختيار الألوان من لقطة الشاشة."

وهذا هو ما أفعله حاليًا، وقد حددت قائمة من الثوابت التي أستخرج منها الألوان.رغم ذلك لا يبدو أنيقًا جدًا!

يبدو أن CMFCVisualManager يقدم عدة طرق للحصول على معلومات الألوان، على سبيل المثال.

CMFCVisualManager::GetSmartDockingBaseGuideColors()
CMFCVisualManager::GetToolbarHighlightColor()

ألقِ نظرة على مستندات MSDN الخاصة بـ CMFCVisualManager.

@GateKiller، لا يقوم OP بتطوير وظيفة إضافية لـ Office 2007، لذا فإن إرشادات واجهة المستخدم لن تساعد حقًا.إنه تطبيق MFC يستخدم حزمة ميزات Visual C++ 2008 والذي يسمح لتطبيقات MFC بالحصول على شكل ومظهر Office 2007.

اقتراح جيد، ولكن لسوء الحظ فإنهم يعيدون ظلالًا مختلفة من اللون الرمادي، عندما أقوم حاليًا بتشغيل تطبيقي بالنمط CMFCVisualManagerOffice2007::Office2007_LunaBlue

CMFCVisualManagerOffice2007::GetTabFrameColors - معلمة إخراج clrFace باللون الرمادي؟

ربما تكون جميعها عبارة عن أقنعة فوق لون أساسي واحد لكل سمة؟بافتراض أنه يمكنك تحديد نظام الألوان الساري مع CMFCVisualManagerOffice2007::GetStyle()، ربما يمكنك معرفة تدرج اللون هذا ثم القيام ببعض الإخفاء باستخدام أساليب GetxxxColor().

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