איך להפוך חלון למחצה שקוף

תוכן עניינים:

איך להפוך חלון למחצה שקוף
איך להפוך חלון למחצה שקוף

וִידֵאוֹ: איך להפוך חלון למחצה שקוף

וִידֵאוֹ: איך להפוך חלון למחצה שקוף
וִידֵאוֹ: פתרונות מיגון שקופים לזכוכית (הגנה מפריצה, הדף ופיזור רסיסים) 2024, נוֹבֶמבֶּר
Anonim

עם שיפור טכנולוגיות התצוגה הגרפית, שופר גם ה- API של מערכות ההפעלה, ומספק למתכנתים יותר ויותר הזדמנויות לפיתוח אלמנטים ממשקיים שאינם סטנדרטיים. אז אחד החידושים של מערכת ההפעלה Windows 2000 היה חלונות שכבתיים, שחלקים מהם יכולים להיות שקופים. בקרוב, תיאור ה- API לעבודה עם חלונות שכבתיים זמין ב- MSDN. עם זאת, בפורומים של מתכנתים עדיין נשאלות שאלות כיצד להפוך חלון לחצי שקוף.

כיצד להפוך חלון למחצה שקוף
כיצד להפוך חלון למחצה שקוף

נחוץ

  • - מהדר;
  • - windows sdk או מסגרת לתכנות חלונות.

הוראות

שלב 1

קבל ידית בחלון שאתה רוצה לעשות שקוף למחצה. מצא או צור חלון. כדי ליצור אותו, השתמש בפונקציות CreateWindow, CreateWindowEx API או בשיטות העטיפה סביב פונקציות אלה השייכות למחלקות המסגרת המשומשת. אב הטיפוס לפונקציה CreateWindow נראה כך:

HWND CreateWindow (LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndPorent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);

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

שלב 2

מציאת חלון יכולה להיעשות באמצעות שיחות API FindWindow, FindWindowEx, EnumWindows, EnumChildWindows, EnumThreadWindows והשילובים שלהם. אתה יכול לטפל בחלון בתוך אזור מסוים באמצעות הפונקציות WindowFromPoint ו- ChildWindowFromPoint.

שלב 3

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

:: SetWindowLong (hWnd, GWL_EXSTYLE,:: GetWindowLong (hWnd, GWL_EXSTYLE));

כאן hWnd הוא ידית החלון שנמצאה כתוצאה מביצוע הפעולות שתוארו בשלב הקודם.

שלב 4

הפוך את החלון למחצה שקוף. השתמש ב- API SetLayeredWindowAttributes או בשיטות של מחלקות העטיפה. אב-טיפוס הפונקציה SetLayeredWindowAttributes נראה כך:

BOOL SetLayeredWindowAttributes (

HWND hwnd, COLORREF crKey, BYTE באלפה, DWORD dwFlags);

שלב 5

הפרמטר hwnd לפונקציה חייב להיות ידית חלון חוקית שהושגה בשלב הראשון. הפרמטר crKey הוא מפתח צבע המשמש להגדרת אזורים שקופים למחצה. הפרמטר bAlpha מציין את ערך השקיפות. כאשר ערך הפרמטר bAlpha שווה ל- 0, האזורים "שקופים למחצה" יהיו שקופים לחלוטין. אם הפרמטר bAlpha הוא 255, הם יהיו אטומים לחלוטין. הפרמטר dwFlags קובע את מצב התצוגה נוספת של תוכן החלון. כאשר הדגל LWA_COLORKEY נכלל בערך dwFlags, האזורים השקופים למחצה ייקבעו על סמך מפתח הצבע. כאשר דגל LWA_ALPHA מופעל, הפרמטר bAlpha ישמש לקביעת ערך השקיפות.

שלב 6

כדי להפוך את כל החלון למחצה שקוף, התקשר ל- SetLayeredWindowAttributes עם ערך פרמטר bAlpha המועדף, דגל LWA_ALPHA, אך ללא דגל LWA_COLORKEY. השתמש בידית החלון שנמצאה כפרמטר הראשון לפונקציה. לדוגמה, כדי להפוך חלון למחצה שקוף, השתמש בשיחה:

:: SetLayeredWindowAttributes (hWnd, RGB (0, 0, 0), 128, LWA_ALPHA);

מוּמלָץ: