كويدغيتس: كيفية تغيير أسلوب الإقحام في StyledTextCtrl (إرسال أمر لالشرارة)

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

سؤال

وكويدغيتس ديه wxStyledTextCtrl التي (كما فهمت) يستخدم الشرارة وراء الكواليس

وأنا لا أعرف الكثير عن الشرارة API، ولكن لدي كيندا فكرة أن تقوم بإصدار الأوامر إلى ذلك.

وعلى وجه الخصوص، أريد أن المؤشر يكون نمط كتلة، وجدت في المفكرة ++ المقتطف التالي:

execute(SCI_SETCARETSTYLE, CARETSTYLE_BLOCK)

وأريد أن تفعل الشيء نفسه في StyledTextCtrl، ولكن ليس لدي أي فكرة عن كيفية الحصول على السيطرة scinitilla خلف الكواليس.

وكيف أفعل هذا؟

وP.S. أنا أعمل في كسبيثون، ولكن أعتقد أنه لا تحدث فرقا.

تحديث:

وبعد بعض الحفر في ج ++ مصادر كويدغيتس، وجدت أن معظم وظائف مجرد دعوة SendMsg، على سبيل المثال:

// Get the time in milliseconds that the caret is on and off. 0 = steady on.
void wxStyledTextCtrl::SetCaretPeriod(int periodMilliseconds)
{
    SendMsg(2076, periodMilliseconds, 0);
}

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

وهكذا، حصلت على القيم أحتاج

#define CARETSTYLE_INVISIBLE 0
#define CARETSTYLE_LINE 1
#define CARETSTYLE_BLOCK 2
#define SCI_SETCARETSTYLE 2512
#define SCI_GETCARETSTYLE 2513

وهكذا SCI_SETCARETSTYLE هو 2512، وعلى غرار كتلة 2.

وهكذا اتصلت SengMsg مع هذه المعايير:

self.SendMsg(2512, 2)

ولكن هناك لا يبدو أن هناك أي أثر!

وماذا يمكن أن يكون السبب؟ كيف يمكنني تصحيح هذا؟

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

المحلول

وأنت لا تكتب أي إصدار من كسبيثون / كويدغيتس الذي تستخدمه، ولكن أفترض أن هذا هو الإصدار 2.8.x. وهذا يتضمن الشرارة النسخة 1.70، في حين أن الجذع SVN (التي سيتم إطلاقها قريبا كما كويدغيتس الإصدار 2.9) والشرارة النسخة 1.75. A <م> البقرى على رأس الملفات الشرارة يكشف أن <م> SCI_GETCARETSTYLE و <م> SCI_SETCARETSTYLE ليست سوى في الجذع كويدغيتس، لذلك لن يتم التعامل مع تلك الرسائل على الإطلاق في كويدغيتس 2.8.

نصائح أخرى

وحاول

self.SendMsg(msg=2512, lp=2)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top