سؤال

عند أفعل

wnd = CreateWindow("EDIT", 0,
    WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | 
    ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN,
    x, y, w, h,
    parentWnd,
    NULL, NULL, NULL);

وكل شيء على ما يرام، ولكن إذا كنت إزالة WS_VSCROLL وWS_HSCROLL ثم القيام أدناه، أنا لا تحصل هكذا منهم نافذة غير صحيح. لماذا ا؟ ليس فقط أن أحصل على نافذة غير صحيح فمن غير صالحة للاستعمال إذا كان كل WS_VSCROLL وWS_HSCROLL مفقودة

style = WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE |
    ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN;
SetWindowLong(wnd, GWL_STYLE, style);
هل كانت مفيدة؟

المحلول

لا يمكن تغيير بعض أنماط السيطرة بعد إنشاء نافذة. النمط ES_AUTOHSCROLL (التي تسيطر أساسا كلمة التفاف) هو واحد منهم. جاء هذا (إلى حد ما بشكل غير مباشر) من قبل قسم MSDN على أنماط التحكم تحرير . يمكنك تعيين بت باستخدام SetWindowLong ()، ولكن سوف تحكم إما تجاهلها أو تتصرف بطريقة متقطعة.

والطريقة الوحيدة للقيام بذلك هي نظيفة لإعادة السيطرة تحرير باستخدام الأساليب المطلوبة. هذا هو في الواقع ما يفعله المفكرة عند تبديل "التفاف" الإعداد.

نصائح أخرى

ويمكنك أن تفعل ذلك مع ShowScrollBar وظيفة (). قد تجد أيضا مثيرة للاهتمام وEnableScrollBar وظيفة () إذا كنت تريد تمكين / تعطيل أشرطة التمرير من النافذة. مع أطيب التحيات.

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