בסוף הלכתי על Set/GetWindowLong, פשוט מכיוון שמצאתי את הדף
הזה (השתמשתי בקוד
הזה מתוך הדף), ואת השני לא ממש הבנתי.
עכשיו יש לי בעיה חדשה.
הUI שלי מיוצג בתור חלון מרכזי, ובתוכו (ברשימה מקושרת) יש לי את כל החלונות ה pre-defined של Windows.
Button, Edit, Static וכולה.
בכל מקרה, אני מצליח להעביר את הevents למתודה הנכונה, אבל עכשיו אני לא יודע איך לבדוק מאיזה חלון זה תחלס בא - מהחלון הראשי, או מאיזה שהוא חלון פנימי.
זה חשוב מכיוון שאני רוצה לבדוק איזה סוג החלון ואיזה סטייל יש לו (Ws).
מה שישר עשיתי זאת פונקצייה שתיקח את ה HWND שמקבלים ותעבור על כל הרשימה ותבדוק עם הוא שווה לHWND שנמצא בתוך אחד מהאובייקטים. אם הוא שווה לאחד מהם, הפונקצייה מחזירה מצביע של האובייקט וככה אני כבר יכול לקבל את כל המידע אליו שמכניסים לו כאשר מוסיפים אותו.
מאיזו שהיא סיבה זה לא פועל.
יש איזה רעיון איך אני יכול לעשות את זה?
קוד PHP:
struct UIObject
{
HWND Handle;
// more info about the window
UIObject* next;
};
class UI
{
public:
// called from the window procedure callback function
UIObject* GetUIObject(HWND Hwnd)
{
if(root->Handle == Hwnd) return root;
UIObject* o = root;
while(o->next != NULL)
{
o = o->next;
if(o->Handle == Hwnd) return o;
}
return NULL;
}
private:
UIObject* root;
};
תודה עוד פעם על העזרה