SetWindowPos

הפונקציה SetWindowPos משנה את הגודל, המיקום ואת סדר z חלון מוקפץ או ברמה העליונה של הילד. הילד, חלונות מוקפצים ולאחר ברמה העליונה מסודרים לפי המראה שלהם על המסך. החלון העליון מקבל את הדירוג הגבוה ביותר, הוא החלון הראשון לפי סדר z.

 (BOOL SetWindowPos HWND  hWnd, / / לטפל לחלוןHWNDhWndInsertAfter, / / לטפל מיקום-לפי הזמנהint X, / / אופקי מיקוםint Y, / האנכיות / מיקום int cx, // width int cy, // heightUINTuFlags / / מסמן מיקום חלון);
 

פרמטרים

hWnd
לטפל לחלון.
hWndInsertAfter
לטפל אל החלון יופיע לפני החלון ממוקם לפי סדר Z. פרמטר זה חייב להיות מטפל בחלון או באחד מהבאים:
ערך משמעות
HWND_BOTTOM מיקום החלון בתחתית סדר Z. אם הפרמטר hWnd מזהה החלון העליון, החלון מאבד את המצב העליון שלה, ממוקם בחלק התחתון של כל שאר החלונות.
HWND_NOTOPMOST ממקם החלון windows ומעל הכל ללא-העליון (כלומר, מאחורי כל החלונות העליון). דגל זה אין השפעה אם החלון כבר חלון העליון.
HWND_TOP ממקם את החלון בראש סדר z.
HWND_TOPMOST מיקום החלון windows ומעל הכל ללא-העליון. החלון שומר על מיקומו העליון גם כאשר הוא הופך ללא פעיל.

לקבלת מידע נוסף אודות אופן השימוש בפרמטר זה, עיין בסעיף הערות הבאות.

X
מציין את המיקום החדש של הצד השמאלי של החלון, בקואורדינטות של הלקוח.
Y
מציין את המיקום החדש של החלק העליון של החלון, בקואורדינטות של הלקוח.
cx
מציין את הרוחב החדש של החלון, בפיקסלים.
cy
מציין את הגובה החדש של החלון, בפיקסלים.
uFlags
מציין את החלון הגודל והמיקום של דגלים. פרמטר זה יכול להיות שילוב של הערכים הבאים:
ערך משמעות
SWP_ASYNCWINDOWPOS אם הליך המשנה הקורא אינו בעל החלון, המערכת המסחר לבקשה הליך המשנה הנמצאים בבעלות החלון. פעולה זו מונעת את רצף הקריאה מחסימת הביצוע שלו בעת הליכי משנה אחרים לעבד את הבקשה.
SWP_DEFERERASE מונע הדור של ההודעה WM_SYNCPAINT.
SWP_DRAWFRAME ציור של המסגרת (המוגדר בתיבה תיאור מחלקה של החלון) סביב החלון.
SWP_FRAMECHANGED שליחת הודעה WM_NCCALCSIZE לחלון, גם אם הגודל של החלון לא משתנה. אם דגל זה לא צוין, WM_NCCALCSIZE נשלחת רק בעת ביצוע שינוי הגודל של חלון.
SWP_HIDEWINDOW מסתירה את חלון.
SWP_NOACTIVATE אינו מפעיל את החלון. אם דגל זה אינו מוגדר, החלון המופעלות ועברו להתגורר בראש אחד או העליון בקבוצה (בהתאם להגדרת הפרמטר hWndInsertAfter ).
SWP_NOCOPYBITS מוחק את כל התוכן של אזור הלקוח. אם דגל זה לא צוין, תוכן חוקי של אזור הלקוח לשמור, להעתיק חזרה אל אזור הלקוח לאחר בגודל החלון או לטאבים.
SWP_NOMOVE שומר על המיקום הנוכחי (התעלמות הפרמטרים x ו- Y ).
SWP_NOOWNERZORDER לא משנה המיקום של חלון הבעלים לפי סדר z.
SWP_NOREDRAW לא לצייר מחדש של שינויים. אם דגל זה מוגדר, לא צובע מחדש מכל סוג מתרחש. אפשרות זו חלה על אזור הלקוח, האזור nonclient (כולל פס הכותרת ושורת פסי גלילה) ולאחר חשפו חלק כלשהו של חלון האב של חלון הזזה. דגל זה מוגדר, היישום חייב במפורש לבטל תוקף או לצייר מחדש כל החלקים של חלון ובחלון האב זקוק שרטוט מחדש.
SWP_NOREPOSITION זהה הדגל SWP_NOOWNERZORDER.
SWP_NOSENDCHANGING מניעת קבלת ההודעה WM_WINDOWPOSCHANGING של החלון.
SWP_NOSIZE שומר על הגודל הנוכחי (התעלמות הפרמטרים cx וסי ).
SWP_NOZORDER שומר את סדר z הנוכחי (התעלמות הפרמטר hWndInsertAfter ).
SWP_SHOWWINDOW הצגת חלון.

להחזיר ערכים

אם הפונקציה מצליחה, הערך המוחזר אינו אפס.

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

הערות

אם מוגדר הדגל SWP_SHOWWINDOW או SWP_HIDEWINDOW, החלון לא ניתן להעביר או בגודל.

אם שינית נתונים מסוימים חלון באמצעות SetWindowLong, עליך לקרוא SetWindowPos כדי שהשינויים ייכנסו לתוקף. השילוב הבא לשימוש uFlags: SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED.

חלון ניתן לבצע החלון העליון על-ידי הגדרת הפרמטר hWndInsertAfter כ HWND_TOPMOST ולהבטיח הדגל SWP_NOZORDER שאינו מוגדר, או על-ידי הגדרת המיקום של חלון לפי סדר Z, כך שניתן יהיה מעל חלונות העליון קיימים. כאשר חלון העליון ביותר נעשית העליון, חלונותיו בבעלות גם נעשים העליון. לבעליו, עם זאת, אינם משתנים.

אם לא SWP_NOACTIVATE ולא SWP_NOZORDER דגל מצוין (כלומר, כאשר היישום מבקש כי חלון ניתן להפעיל בו זמנית ולא לשנות את מיקומו לפי סדר Z), נעשה שימוש בערך שצוין ב- hWndInsertAfter רק בנסיבות הבאות:

ליישום אין אפשרות להפעיל את חלון לא פעיל ללא גם להביא אותה אל ראש סדר Z. יישומים לשנות המיקום של חלון מופעל סדר z ללא הגבלות או אותו הפעל חלון ולאחר מכן להזיז אותה לחלק העליון של windows או העליון.

אם החלון העליון הוא ממקם מחדש למטה (HWND_BOTTOM) של סדר z או לאחר כל חלון העליון ביותר, היא עוד העליון. כאשר החלון העליון נעשית ללא העליון, לבעליו וחלונות בבעלות נעשים windows העליון.

חלון העליון ביותר יכולה להיות בעלים של החלון העליון, אך ההפך אינו יכול להתרחש. חלון כלשהו (לדוגמה, תיבת הדו-שיח) בבעלות על החלון העליון הוא עצמו עשה החלון העליון, כדי להבטיח כי כל בבעלות windows להישאר מעל בעליהן.

אם יישום לא בקידמה, והוא צריך להיות בקידמה, עליך לבצע קריאה לפונקציה SetForegroundWindow.

חלונות CE: אם זהו החלון הראשי גלוי, לא צוין דגל SWP_NOACTIVATE, פונקציה זו תבצע הפעלה של החלון. אם זהו החלון הפעיל הנוכחי, את הדגל SWP_NOACTIVATE או את הדגל SWP_HIDEWINDOW מוגדר, הפעלת מועברת לחלון הראשי גלוי אחר.

כאשר אתה מגדיר את הדגל SWP_FRAMECHANGED בפרמטר nFlags לפונקציה זו, Windows CE ציור מחדש את כל האזור-לקוח של החלון, שעלול לשנות את הגודל של אזור הלקוח. זוהי הדרך היחידה להגיע לאזור הלקוח יש לחשב מחדש והיא משמשת בדרך כלל לאחר שינית את סגנון חלון על-ידי קריאה SetWindowLong.

SetWindowPos תגרום תמיד הודעה WM_WINDOWPOSCHANGED להישלח אל החלון. הדגלים שהועבר הודעה זו זהים בדיוק לאלה שהועבר אל הפונקציה. אין הודעות נשלחות על-ידי פונקציה זו.

Windows CE 1.0 אינו תומך קבועים HWND_TOPMOST ו- HWND_NOTOPMOST בפרמטר hwndInsertAfter.

Windows CE 1.0 אינו תומך בדגלי SWP_DRAWFRAME או SWP_NOCOPYBITS ב fuFlags paramete.

QuickInfo

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

ראה גם

מבט כולל על Windows, פונקציות חלון, MoveWindow, SetActiveWindow, SetForegroundWindow

Index