سؤال

هل وثائق عناصر التحكم في التحرير الغنية سيئة حقًا (خاطئة؟) كما تبدو؟أقوم الآن بالاتصال يدويًا بـ LoadLibrary("riched20.dll") من أجل ظهور عنصر تحكم التحرير الغني.توضح وثائق Rich Edit هذا بشكل سيئ في نموذج التعليمات البرمجية الأول لاستخدام عناصر تحكم Rich Edit.

يتحدث عن استدعاء InitCommonControlsEx() لإضافة أنماط مرئية، لكنه لا يذكر أي العلامات سيتم تمريرها.

هل هناك طريقة أفضل لتحميل عنصر تحكم Rich Edit؟

http://msdn.microsoft.com/en-us/library/bb787877(VS.85).aspx

إليك الكود الوحيد الذي يمكنني كتابته لجعله يعمل:

#include "Richedit.h"
#include "commctrl.h"

INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_USEREX_CLASSES;  //Could be 0xFFFFFFFF and it still wouldn't work
InitCommonControlsEx(&icex);  //Does nothing for Rich Edit controls

LoadLibrary("riched20.dll");  //Manually?  For real?
hWndRichEdit = CreateWindowEx(
    ES_SUNKEN,
    RICHEDIT_CLASS,
    "",
    WS_BORDER | WS_VISIBLE | WS_CHILD,
    2, 2, 100, 24,
    hWnd, (HMENU) ID_RICH_EDIT, hInst, NULL);
هل كانت مفيدة؟

المحلول

باستخدام MFC، تعمل عناصر تحكم RichEdit فقط.

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

إذا كنت تستخدم الإصدار 2008، فأنت تريد تضمين Msftedit.dll واستخدام MSFTEDIT_CLASS بدلاً من ذلك (MS هي هراء بسبب التوافق مع الإصدارات السابقة في بعض الأحيان).

ال مستندات أقترح عليك القيام بذلك بشكل صحيح لبرمجة Win32.

نصائح أخرى

منذ عدة سنوات مضت، واجهت نفس المشكلة، ونعم، كان الجواب هو تحميل ملف .dll يدويًا.والسبب، بقدر ما أستطيع أن أتذكر، هو أن فئة نافذة RichEdit مسجلة في DllMain الخاص بـ riched20.dll.

ألا توجد مكتبة استيراد (ربما riched20.lib) يمكنك الارتباط بها.ثم لن تضطر إلى تحميله "يدويًا" في وقت التشغيل.هذه هي الطريقة التي تعمل بها جميع الضوابط القياسية.يضيف VS تلقائيًا مرجعًا إلى user32.lib عندما تقوم بإنشاء مشروع.

أعتقد أنه يتعين عليك الاتصال بـ CoInitializeEx قبل إنشاء أي من عناصر التحكم الشائعة.

ليست هناك حاجة إلى LoadLibrary.إذا قمت بالارتباط بملف .lib الصحيح، فسوف يعتني برنامج تحميل exe بهذه التفاصيل نيابةً عنك.

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