سؤال

أنا أحاول أن أتصل OpenThemeData (انظر msdn OpenThemeData) وظيفة ولكن لم أستطع تحديد ما هي مقبولة أسماء فئة لتمريرها من قبل pszClassList معلمة.

HTHEME OpenThemeData(      
    HWND hwnd,
    LPCWSTR pszClassList
);

يمكن لأي أحد أن يقول لي ما هي مقبولة الدرجة الأسماء التي لا يمكن أن تمر إلى أن المعلمة ؟ وذلك بفضل!

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

المحلول

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

ومع ذلك، إلا إذا كنت تستخدم Win32 والخام كثيرا، وربما كنت لا تفعل الكثير خلق التحكم مباشرة باستخدام اسم الفئة. وبدلا رش أسماء الطبقة بحرية في جميع أنحاء MSDN. مكان جيد للبدء هو عادة الملف "CommCtrl.h" من Platform SDK، التي لديها الكثير منهم، وانهم دائما صفها في مساعدة MSDN على الضوابط المشتركة الفردية. يمكنك أيضا في كثير من الأحيان نتعلم منها من خلال النظر في كيفية تعريف الحوارات في ملفات .RC التي فتحها في محرر النص: هذه تحتوي على اسم الفئة لعناصر

نصائح أخرى

المادة أجزاء الدول على MSDN يحتوي على الجدول الذي يبين التحكم في الطبقات, أجزاء, ، الدول.القيم في الجدول المحدد في Vsstyle.h و Vssym32.h.

هنا إشارة سريعة:

BUTTON, CLOCK, COMBOBOX, COMMUNICATIONS, CONTROLPANEL, DATEPICKER, DRAGDROP, 
EDIT, EXPLORERBAR, FLYOUT, GLOBALS, HEADER, LISTBOX, LISTVIEW, MENU, MENUBAND, 
NAVIGATION, PAGE, PROGRESS, REBAR, SCROLLBAR, SEARCHEDITBOX, SPIN, STARTPANEL, 
STATUS, TAB, TASKBAND, TASKBAR, TASKDIALOG, TEXTSTYLE, TOOLBAR, TOOLTIP, 
TRACKBAR, TRAYNOTIFY, TREEVIEW, WINDOW

الجواب على السؤال Windows مواضيع البصرية:معرض قطع الغيار ؟ يوفر "أجزاء الدول إكسبلورر" تطبيق حيث يمكنك استعراض واختبار معظم الأساليب.

تعتمد

وأسماء فئة على الموضوع. على سبيل المثال، ووثائق OpenThemeData الدول :

<اقتباس فقرة>   

وأسماء Class للموضوع ايرو هي   المعرفة في AeroStyle.xml، وهو   وجدت في تضمين مجلد   تطوير برامج Microsoft Windows   كيت (SDK).

أعرف أن هذا هو السؤال القديم, ولكن أريد أن أعطي محدث الجواب (2018) بالنسبة لأولئك الذين يأتون إلى هنا من جوجل.

الجواب المقبول من DavidK يقول للنظر في ملف "AeroStyle.xml"حيث الموضوعات المحددة.هذا الملف هو جزء من نظام التشغيل Windows 7 SDK ، ولكن تم إزالتها من ويندوز 10 SDK ، وبالتالي فإن قبول الإجابة ليست مفيدة بعد الآن.

الجواب من البداية الروابط MSDN حيث قائمة من موضوع أسماء أجزاء الدول للغاية incompetlete و لا محدث.

المواضيع التي يتم رسمها من قبل UxTheme.dll الذي يقرأ الصور و الألوان ، إلخ.من الملف ايرو.msstyles في المجلد C:\Windows\Resources\Themes\Aero على ويندوز 10.

ولكن عند فتح هذا الملف في محرر عرافة لن تجد أسماء جميع المواضيع.أنا لا أعرف إذا كان هناك طريقة تعداد كل موضوع القائمة أسماء الفئات التي يمكن أن تنتقل إلى OpenThemeData().أعتقد أن هذا غير ممكن.

ولكن ما أنا متأكد منه هو أنه في ويندوز 10 بناء 18282 مايكروسوفت أزالت موضوع "Clock"التي لا تستخدم بعد الآن الكثير من لا يحملون وثائق المواضيع تم إضافة مثل على سبيل المثال:"TaskBand2CompositedSmallIconsVertical8Light::Taskband2"والتي يتم تمرير موضوع الدرجة اسم OpenThemeData().

و أعرف أيضا أن عدة مواضيع يمكن الحصول عليها إلا إذا قمت بتمرير مؤشر إطار صحيح.إذا كنت تمرير مقبض النافذة الخطأ التي قد تحصل موضوع آخر في التعامل معها من المتوقع أو حتى NULL.

أعرف أيضا أن مايكروسوفت في الماضي 2 سنوات داخليا قد تغير كل رمز إلى استخدام OpenThemeDataForDpi() بدلا من OpenThemeData() لأن كل جهاز على نظام التشغيل ويندوز 10 قد يكون مختلف القرار.

المشكلة التي لدينا هنا هو نقص في وثائق MSDN وعدم وجود وظيفة API تعداد كافة تلتقطها المواضيع.

وعليها أن تفعل مع ايرو، والتي حتى غير موجود على XP لا شيء! راجع التعليمات البرمجية المصدر من OpenThemeData () ..

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