עבור לתוכן

פונקציית DestroyWindow ב- C++

Featured Replies

פורסם

כתבתי את הקוד הבא:


CWnd* firstWin = FindWindow(NULL, "FirstWin");
firstWin->DestroyWindow();

הקוד הנ"ל מוצא את החלון הפתוח firstWin אך משום מה הוא לא סוגר לי אותו.

למישהו יש רעיון? האם יש פונקציה אחרת לסגירת החלון?

תודה מראש, שלומי

פורסם

הניחוש שלי זה שאתה מערבב MFC יחד עם win32 api.

תבדוק אם FindWindow מחזיר HWND או CWnd*.

פורסם
  • מחבר

יש מצב שאני מערבב ביניהם... מה ההבדלים ביניהם בכלל?? ולמה זה טעות לערבב אותם?

בכל מקרה, אני זוכר שפתחתי פרוייקט MFC, ולאחר בדיקה רשום שה-FindWindow מחזיר CWnd*.

פורסם

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

זה כמו לבשל ולומר "נו, מה רע לשים בעוגה שלי קמח רגיל במקום קמח תופח? זה אותו דבר, לא?"

פורסם

אחת מהאנלוגיות תכנות הביזאריות ביותר ששמעתי :)

פורסם

החלון שלך ?

אנלוגיה גם שגויה ולא קשורה לכלום, כי אחת מהם בכלל לא קיימת.

פורסם

huh? מה לא קיימת?

בכל מקרה, לשאלה:

בתיעוד של DestroyWindow של ה-win api כתוב שאתה לא יכול להשתמש בה על מנת להשמיד חלון שרץ ב-thread אחר (ומכאן גם שאתה לא יכול להשמיד חלון של תהליך אחר). לא הצלחתי למצוא משהו דומה ב-DestroyWindow של MFC, אבל יכול להיות שגם עליו חלה המגבלה הזו.

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

פורסם

יפה שהגעתם לתשובה, בכל מקרה הקומפיילר יגיד שיש המרה מסוכנת בין HWnd ל CWnd* אם זה מה שהיה קורה במקרה הראשון.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים