הפונקציה SetWindowPos משנה את הגודל, המיקום ואת סדר z חלון מוקפץ או ברמה העליונה של הילד. הילד, חלונות מוקפצים ולאחר ברמה העליונה מסודרים לפי המראה שלהם על המסך. החלון העליון מקבל את הדירוג הגבוה ביותר, הוא החלון הראשון לפי סדר z.
(BOOL SetWindowPos HWND hWnd, / / לטפל לחלוןHWNDhWndInsertAfter, / / לטפל מיקום-לפי הזמנהint X, / / אופקי מיקוםint Y, / האנכיות / מיקום int cx, // width int cy, // heightUINTuFlags / / מסמן מיקום חלון);
| ערך | משמעות |
|---|---|
| HWND_BOTTOM | מיקום החלון בתחתית סדר Z. אם הפרמטר hWnd מזהה החלון העליון, החלון מאבד את המצב העליון שלה, ממוקם בחלק התחתון של כל שאר החלונות. |
| HWND_NOTOPMOST | ממקם החלון windows ומעל הכל ללא-העליון (כלומר, מאחורי כל החלונות העליון). דגל זה אין השפעה אם החלון כבר חלון העליון. |
| HWND_TOP | ממקם את החלון בראש סדר z. |
| HWND_TOPMOST | מיקום החלון windows ומעל הכל ללא-העליון. החלון שומר על מיקומו העליון גם כאשר הוא הופך ללא פעיל. |
לקבלת מידע נוסף אודות אופן השימוש בפרמטר זה, עיין בסעיף הערות הבאות.
| ערך | משמעות |
|---|---|
| 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.
nbsp; Windows &NT: מחייב גירסה 3.1 או גירסה מתקדמת יותר.
Windows:נדרש Windows 95 או גירסה מתקדמת יותר.
חלונות CE:דורש גירסה 1.0 ואילך.
כותרת עליונה:להצהיר על winuser.h.
ייבוא ספריית:השתמש user32.lib.
מבט כולל על Windows, פונקציות חלון, MoveWindow, SetActiveWindow, SetForegroundWindow