MFC

yair24

Member
MFC

אוף זה קשה MFC... הוספתי תמונה של BITMAP ל RESOURCE ואני רוצה לצייר את התמונה הזאת ולהזיז אותה עם החצים להזיז עיגול הצלחתי אבל תמונה אני לא יודע איך להעביר אותה לחלון מי שיכול לעזור יבורך יאיר
 

IdanR

New member
תשובה

אני לא בטוח איך בדיוק זה הולך ב-MFC, אבל בכל אופן... קודם כל אתה צריך ליצור משתנה handle לקובץ הbmp שהוספת. הנה הפונקציה שתעשה לך את העבודה:
inline HBITMAP LoadBitmapFromResource(DWORD dwID ) { return (HBITMAP)LoadImage( hInstance, MAKEINTRESOURCE(dwID), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION ); }​
ואז את יוצר את המשתנה בצורה כזאת:
HBITMAP hbmPicture = LoadBitmapFromResource(IDB_PICTURE);​
(בהנחה ש IDB_PICTURE זה השם של ה RESOURCE) כמובן שעלייך ליצור Device Context בשביל התמונה, ואחר-כך לבחור את משתנה שיצרת מקודם לתוך ה DC באמצעות ()SelectObject, בצורה כזאת:
HDC hdcBitmap = CreateCompatibleDC( NULL ); SelectObject(hdcBitmap, hbmBitmap);​
עכשיו אתה יכול להשתמשת בפונקציה ()BitBlt כדי להעביר את התמונה מה Memory DC לתוך הDC של המסך, או החלון. קרא בקבצי העזרה לגבי השימוש בפונקציה הזאת ואחרות. ובמקרה ואתה עדיין לא מבין משהו, תגיב להודעה הזאת.
נ.ב טיפ קטן - אתה יכול ליצור לעצמך פונקציה שעושה את כל פעולת ההעברה במקום לכתוב כל פעם את אותם שורות, רק עם פרמטרים שונים.
 

IdanR

New member
תיקון

הפרמטר השני בפונקצייה SelectObject אמור להיות hbmPicture בהתאם למשתנה שיצרת.
 

yair24

Member
../images/Emo8.gif

אני מזהה את הפונקציה הזאת מהמשחק שלך FIRESNAKE אני אנסה את זה ונראה יאיר
 

ihovav

New member
תראה, תשמע...

אז ככה אני אמנם לא ניסיתי אף פעם להכניס תמונה לתכנית ב MFC אבל ניסיתי להיכנס ל MSDN ןראה זה פלא - תחת הכותרת CDC נמצא הנושא BITMAP FUNCTIONS שם אני מאמין שתוכל למצוא את כל מה שאתה מחפש בכל מקרה - אני יודע שאת התמונה אתה טוען בעזרת CDC - אז תנסה לחפש הערות על אותן הפונקציות של ה CDC שמטפלות ב BITMAP
 

yair24

Member
אתה צודק אבל...

העזרה שם היא מאוד מסובכת ובנוסף היו שם כל מיני פונקציות כגון פונקציה שמחזירה גודל של ביטמפ או מחזירה פונט נוכחי וכל מיני דברים כאלה לא היתה שם דוגמא לאיך מכניסים ביטמפ לחלון דוקא בקטע של העזרה מייקרוסופט חלשים בורלנד למשל מסביר הרבה יותר טוב מהם מצד שני MFC הוא נושא מסובך לכשעצמו אבל תודה בכל מקרה
 

ihovav

New member
מה אתה מדבר ?!

לדעתי - ה MSDN הוא אחלה של דבר - רק צריך להשתפשף בשימוש בו לגבי השאלה - אני אנסה לחפש ולהתנסות בזה בעצמי ולענות לך צפה לתגובה נוספת בקרוב
 

yair24

Member
אוקיי

מצאתי בMSDN איך להדפיס BMP והצלחתי עכשיו אני עם הבעיה של איך לעשות שאני לוחץ פעם אחת והוא זז רצוף אני אנסה לעבוד על זה יאיר
 

IdanR

New member
פשוט...

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