WS_VSCROLL والأشغال أسلوب CreateWindow، SetWindowLong دويسنت
سؤال
عند أفعل
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 وظيفة () إذا كنت تريد تمكين / تعطيل أشرطة التمرير من النافذة. مع أطيب التحيات.