ما هو MFC الخاص ولماذا لا يمكن الوصول إليه من خلال الواجهة العادية؟

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

  •  20-09-2019
  •  | 
  •  

سؤال

أنا أستخدم MFC لتطوير واجهة المستخدم الرسومية وعثرت على وظيفة قد تكون مفيدة لما أحاول القيام به.الدالة هي _AfxCompareClassName.ومع ذلك، يتم تضمينه في الملف "afximpl.h" الموجود في الدليل "VC/altmfc/"سرك/mfc/afximpl.h".يتضمن mfc العادي موجودًا في الدليل "VC/atlmfc/يشمل".

الآن مما قمت بتجميعه من تلك الملفات والوظائف الموجودة في src/mfc تعتبر خاصة mfc (وفقا لهذا الرجل) ولا ينبغي لي استخدامها.لماذا ؟هذه الوظيفة تبدو جميلة.سيساعدني ذلك في معرفة مكان وجودي حاليًا في واجهة المستخدم.

في النهاية ما أردت فعله هو تغيير سلوك مفاتيح الهروب/الإرجاع عند تحرير حقل من النص (التحكم في التحرير).أسئلتي هي التالية:

  • ما هي وظيفة MFC الخاصة؟
  • لماذا لا ينبغي لي استخدام هذه الوظائف (مما جمعته أنها تتغير كثيرًا، ولهذا السبب لا ينبغي لي استخدامها.هل هناك سبب آخر؟)
  • هل هناك طريقة أنظف للقيام بما أتطلع إلى القيام به؟

على الرغم من أنه سيكون من الجيد الحصول على بعض المعلومات حول MFC الخاص لأنه لا يبدو أن هناك أي معلومات عن SO حتى الآن.

شكرا جزيلا ، JC

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

المحلول

ملفات MFC "الخاصة" هي تفاصيل تنفيذ MFC.تمامًا كما لا تريد أو تتوقع أن يصل مستخدمو فصولك الدراسية إلى القطاع الخاص:البيانات أو الأساليب، يجب ألا تعتمد على رمز الأداة المساعدة لمستوى تنفيذ MFC.لاحظ أن أي شيء رائع تقريبًا يمكنك العثور عليه في تفاصيل تنفيذ MFC متاح للعامة - في مكان ما.عليك فقط أن تحفر.

توجد وظيفة مدمجة في MFC تقوم بما تريد.تسمى RUNTIME_CLASS, ، وإليك نموذج التعليمات البرمجية من MSDN:

// Example for RUNTIME_CLASS
CRuntimeClass* prt = RUNTIME_CLASS( CAge );
ASSERT( lstrcmp( prt->m_lpszClassName, "CAge" )  == 0 );

نصائح أخرى

انها "خاصة" كما تقع في شجرة المصدر بدلا من أن يتضمن المجلد الخارجي.

يجب ألا تستخدم الوظائف المحددة في هذه الملفات لأنها داخلية لتنفيذ MFC ويمكن أن تتغير بشكل جيد.

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

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