עבור לתוכן

בעיה הזויה ב visual c++ win32

Featured Replies

פורסם

קודם כל תודה על העזרה המצויינת שאני מקבל פה עד עכשיו

הבעיה ממש הזויה :|

נתתי איזה חלק קוד קטן לחבר

הקןד עובד אצלי ב 100%

הקוד הוא :

		rect=new RECT;
rect->left=0;
rect->top=0;
rect->right=1024;
rect->bottom=768;
InvalidateRect(hwnd,rect,FALSE);

כאשר בהגדרת החלון מוגדר:

RECT    *rect;

הקטע הזה אמור לגרום לכך שכל המסך לא נגיש מה שאמור לרענן אותו

2 הפרויקיטים לידי והקטע פשוט זהה בשניהם

אצלי זה עובד

ואצלו הארורים זה :

main.cpp(983): error C2059: syntax error : 'constant'
main.cpp(984): error C2039: 'rect' : is not a member of 'tagRECT'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinDef.h(296) : see declaration of 'tagRECT'
main.cpp(984): error C2232: '->tagRECT::top' : left operand has '' type, use '.'
main.cpp(985): error C2059: syntax error : 'constant'
main.cpp(986): error C2039: 'rect' : is not a member of 'tagRECT'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinDef.h(296) : see declaration of 'tagRECT'
main.cpp(986): error C2232: '->tagRECT::bottom' : left operand has '' type, use '.'

למישהו יש רעיון מה הבעיה ?

תודה מראש

פורסם

הכללת את הספריות של windows?

פורסם
  • מחבר

הכללת את הספריות של windows?

כן והיותר מוזר שבחלון אחר באותו פרוייקט אין ארורים

פורסם

איזו שורה זו שורה 983?

פורסם

מה זה tagRECT?

פורסם
  • מחבר

איזו שורה זו שורה 983?

rect->left=0;

מה זה tagRECT?

אין לי מושג למה זה מופיע בכלל

פעם ראשונה אני נתקל בביטוי הזה

פורסם

אין לי מושג מה הבעיה אבל יש לי רעיונות.

1) יכול להיות שלא הגדרת את rect כמצביע? הוא אמור להיות RECT*

2) יכול להיות ש-rect הוא מקרו שהוגדר איפהשהו. תנסה לשנות את השם של המשתנה ל-prect (הוא בכל מקרה מצביע).

3) אתה משתמש ב-precompiled headers ומשהו רע קרה להם. תעשה clean לכל הפרוייקט.

4) אני לא חושב שזה זה, וזה קרה לי רק פעם או פעמיים בחיים, אבל לגרסאות ישנות של visual studio יש ממש באגים רעים וקרה ש-reboot פתר לי (ולאחרים) את הבעיה. לא, אני לא יודע איך זה יכול להיות, ולמה זה משפיע. ובכל זאת תעשה clean, reboot ו-rebuild all.

פורסם
  • מחבר

אין לי מושג מה הבעיה אבל יש לי רעיונות.

1) יכול להיות שלא הגדרת את rect כמצביע? הוא אמור להיות RECT*

2) יכול להיות ש-rect הוא מקרו שהוגדר איפהשהו. תנסה לשנות את השם של המשתנה ל-prect (הוא בכל מקרה מצביע).

3) אתה משתמש ב-precompiled headers ומשהו רע קרה להם. תעשה clean לכל הפרוייקט.

4) אני לא חושב שזה זה, וזה קרה לי רק פעם או פעמיים בחיים, אבל לגרסאות ישנות של visual studio יש ממש באגים רעים וקרה ש-reboot פתר לי (ולאחרים) את הבעיה. לא, אני לא יודע איך זה יכול להיות, ולמה זה משפיע. ובכל זאת תעשה clean, reboot ו-rebuild all.

1) מוגדר כמצביע

2) ניסיתי לשנות את השם

עשיתי 3 ו- 4 לא עזר

משהו ששמתי לב הבעיה היא בשורות :

PRECT->left=0;

PRECT->right=0;

כשאני מוחק אותם זה עובד כמו שצריך לדוג' :

		PRECT=new RECT;
PRECT->top=0;
PRECT->bottom=768;
InvalidateRect(hwnd,PRECT,FALSE);

כמובן שלא יעשה את העבודה אבל אין ארורים

יש לך רעיון אחר ?

פורסם

האם יכול להיות ש-RECT מוגדר ללא שדות של left או right אלא עם width?

תמצא את ההגדרה שלו ב-H ותראה לנו.

פורסם

היכן ההגדרה של rect

יכול להיות שבHeader?

פורסם
  • מחבר

האם יכול להיות ש-RECT מוגדר ללא שדות של left או right אלא עם width?

תמצא את ההגדרה שלו ב-H ותראה לנו.

הבעיה הסתדרה

הטעות הייתה כל כך מטומטת בעע :\

בטעות היה בקובץ אחר מוגדר :

#define right 1

#define left 2

פורסם

וזו דוגמא אחת ללמה מקרו הם הרשע הטהור בהתגלמותו.

פורסם

או פשוט לתת שמות עם אותיות גדולות.

פורסם

זה פתרון נקודתי לבעיה אמיתית. כמובן שזה הפתרון המקובל, אבל לדוגמא אם הוא היה משתמש ב-enum להגדיר את left ו-right אז היו לכולנו פחות בעיות.

ארכיון

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

דיונים חדשים