הקצאת מאגר טקסט

כאשר המערכת יוצרת פקד עריכה, אותו באופן אוטומטי יוצר מאגר טקסט קובע את הגודל ההתחלתי, מגדילה את לפי הצורך. הגודל ניתן עד מגבלה מוגדרת מראש של-32 קילו-בתים עבור פקדי עריכה מרובי שורות. בגלל מגבלה זו עשויות להשתנות, הוא נקרא הגבלה רכה. יישום להגדיר מגבלה קשה גודל המאגר על-ידי שליחת הודעת EM_SETLIMITTEXT לפקד העריכה. אם המאגר או חורג, המערכת שולחת היישום הודעת EN_ERRSPACE . יישום יכול לאחזר את מגבלת טקסט הנוכחי על-ידי שליחת הודעת EM_GETLIMITTEXT.

המערכת יוצרת בדרך כלל מאגר פקד עריכה בתיבת דו-שיח, שימוש בזיכרון מחוץ יחידת נתונים של היישום. יישום ניתן להעלים את מיקומי ברירת המחדל וליצור המאגר החל שלו ערמה מקומית על-ידי שימוש בסגנון DS_LOCALEDIT בעת יצירת פקד עריכה. יישום המשתמש בסגנון DS_LOCALEDIT אחראי כל הקצאות המאגר. כדי להפוך את הקצאת הראשונית, ניתן להתקשר יישום LocalAlloc הפונקציה ועוברים המאגר שהוחזר לטפל לפקד עריכה על-ידי שליחתו הודעת EM_SETHANDLE . כדי לבצע הקצאות עוקבות (בתגובה להודעת EN_ERRSPACE, לדוגמה), יישום צריך לשמור את התוכן הנוכחי של המאגר (במידת הצורך) ו להשיג מאגר חדש כדלקמן

  1. לאחזר את נקודת האחיזה של זיכרון כעת הקצאה עבור טקסט פקד עריכה מרובת שורות על-ידי שליחת הודעת EM_GETHANDLE של הפקד.
  2. לפנות אל המאגר על-ידי קורא LocalFree הפונקציה.
  3. להשיג מאגר חדש (ואת נקודת האחיזה של המאגר) על-ידי קריאה LocalAlloc.
  4. לתת את נקודת האחיזה של מאגר למערכת על-ידי שליחת הודעת EM_SETHANDLE של הפקד.

EM_SETHANDLE והודעות EM_GETHANDLE חלות רק על פקדי עריכה מרובי שורות.

יישום המשתמש את אופן הפעולה של ההקצאה המוגדר כברירת מחדל (כלומר, לא להשתמש DS_LOCALEDIT בסגנון) לא חייבים לשלוח הודעות EM_SETHANDLE ו- EM_GETHANDLE לפקד העריכה.

שליחת הודעת EM_SETHANDLE יש כמה תופעות לוואי: הוא מנקה את הדגל בטל (הפיכת ההודעה EM_CANUNDO להחזיר אפס) הוא מנקה את דגל שינוי (הפיכת ההודעה EM_GETMODIFY להחזיר אפס), הוא ציור מחדש את החלון של פקד עריכה.

Index