SetWindowLong

הפונקציה SetWindowLong משתנה תכונה של החלון שצוין. הפונקציה גם קביעת ערך של 32 סיביות (ארוך) בחלק ההיסט שצוין לזיכרון חלון נוסף של חלון.

(SetWindowLong ארוך HWND  hWnd, / / לטפל של חלוןintnIndex, / / ההיסט של ערך לקביעתארוךdwNewLong / / חדשים בערך);
 

פרמטרים

hWnd
לטפל כדי החלון, בעקיפין, את המחלקה אליה שייך החלון.
nIndex
מציין את ההיסט מבוסס אפס לערך שיש להגדיר. הערכים החוקיים הם בטווח אפס דרך מספר הבתים של זיכרון חלון נוסף, פחות 4; לדוגמה, אם ציינת הבתים 12 או יותר של זיכרון נוסף, ערך של 8 יהיה אינדקס השלישי מספר שלם של 32 סיביות. כדי להגדיר כל ערך אחר, ציין אחד מהבאים:
ערך פעולה
GWL_EXSTYLE מגדיר חדש מורחב סגנון חלון.
GWL_STYLE הגדרת סגנון חלון חדש.
GWL_WNDPROC קביעת כתובת חדשה עבור הפרוצדורה של חלון.
GWL_HINSTANCE קביעת נקודת אחיזה מופע חדש של יישום.
GWL_ID הגדרת מזהה חדש של חלון.
GWL_USERDATA קובע את הערך של 32 סיביות המשויך החלון. לכל חלון יש ערך 32 סיביות תואם מיועד לשימוש על-ידי היישום שיצר את החלון.

הערכים הבאים זמינים גם כאשר הפרמטר hWnd מזהה תיבת דו-שיח:
ערך פעולה
DWL_DLGPROC מגדיר את הכתובת החדשה של הפרוצדורה תיבת הדו-שיח.
DWL_MSGRESULT מגדיר את ערך ההחזרה של הודעה מעובד בהליך תיבת הדו-שיח.
DWL_USER הגדרת מידע נוסף חדשות שלא כפרטי ליישום, כגון נקודות אחיזה או מצביעים.

dwNewLong
מציין את ערך חלופי.

להחזיר ערכים

אם הפונקציה מצליחה, הערך המוחזר הוא הערך הקודם של מספר שלם של 32 סיביות שצוין.

אם הפעולה תיכשל, הערך המוחזר הוא אפס. כדי לקבל מידע שגיאות מורחב, לקרוא GetLastError.

אם הערך הקודם של מספר שלם של 32 סיביות שצוין הוא אפס, הפונקציה מצליחה, הערך המוחזר הוא אפס, אך הפונקציה אינה מנקה את מידע השגיאה האחרונה. דבר זה הופך קשה לקבוע הצלחה או כישלון. כדי להתמודד עם הבעיה, עליך לנקות את מידע השגיאה האחרון על-ידי קריאה SetLastError(0) לפני הקריאה SetWindowLong. לאחר מכן, הפונקציה כשל יצויין על ידי ערך ההחזרה של אפס, תוצאה GetLastError שאינו אפס.

הערות

הפונקציה SetWindowLong נכשל אם החלון שצוין על-ידי הפרמטר hWnd אינו שייך תהליך זהה הליך המשנה של הקורא.

במטמון נתונים מסוימים חלון, כך שינויים שמבוצעים באמצעות SetWindowLong לא ייכנסו לתוקף עד לפונקציה SetWindowPos.

אם תשתמש SetWindowLong עם האינדקס GWL_WNDPROC כדי להחליף את ההליך חלון, ההליך חלון חייב לציית להנחיות המפורטות בתיאור של פונקציית התקשרות חזרה של WindowProc.

אם אתה משתמש SetWindowLong עם האינדקס DWL_MSGRESULT כדי להגדיר את ערך ההחזרה עבור הודעה המעובד על-ידי שגרה דו-שיח, באפשרותך לחזור TRUE ישירות אחר כך. אחרת, אם תקרא כל פונקציה שתוצאתו שלך הליך הדו-שיח קבלת הודעת חלון, ההודעה חלון מקוננים עלולה להחליף את ערך ההחזרה שבאפשרותך להגדיר באמצעות DWL_MSGRESULT.

קריאה SetWindowLong עם האינדקס GWL_WNDPROC יוצר עם מחלקת המשנה של מחלקת חלון נעשה שימוש כדי ליצור את החלון. יישום יכול לתתי מחלקת מערכת, אבל צריך לא לתתי מחלקת חלון שנוצרו על-ידי תהליך אחר. הפונקציה SetWindowLong יוצרת לתתי חלון על-ידי שינוי ההליך חלון המשויכת למחלקה חלון מסוים, גורם לקרוא לפרוצדורה חלון חדש במקום הקודם של המערכת. יישום חייב לעבור כל ההודעות לא לעבד ההליך חלון חדש בהליך החלון הקודם על-ידי קריאה CallWindowProc. פעולה זו מאפשרת את היישום ליצור שרשרת של הליכים חלון.

שמירת זיכרון נוסף חלון על-ידי ציון ערך שאינו אפס חבר cbWndExtra של מבנה WNDCLASSEX בהם משתמשים עם הפונקציה RegisterClassEx.

לא, עליך לקרוא SetWindowLong עם האינדקס GWL_HWNDPARENT לשינוי האב של חלון צאצא. במקום זאת, השתמש בפונקציה SetParent.

חלונות CE: הפרמטר nIndex חייב להיות כפולה של 4 בתים.

גישה unaligned אינו נתמך.

ערכי פרמטר nIndex הבאים אינם נתמכים:

GWL_HINSTANCE

GWL_HWNDPARENT

GWL_USERDATA

בגירסאות Windows CE 2.0 או גירסה מתקדמת יותר תומך בערך DWL_DLGPROC בפרמטר nIndex , אך Windows CE 1.0 לא.

QuickInfo

nbsp; Windows &NT: מחייב גירסה 3.1 או גירסה מתקדמת יותר.
Windows:נדרש Windows 95 או גירסה מתקדמת יותר.
חלונות CE:דורש גירסה 1.0 ואילך.
כותרת עליונה:להצהיר על winuser.h.
ייבוא ספריית:השתמש user32.lib.
Unicode:מיושם על גירסאות Unicode ו- ANSI ב- Windows NT.

ראה גם

מבט כולל על מחלקות חלון, פונקציות המחלקה חלון, CallWindowProc, GetWindowLong, RegisterClassEx, SetParent, WindowProc, WNDCLASSEX

Index