לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #7  
ישן 17-03-2006, 23:04
  cyberia_2ooo cyberia_2ooo אינו מחובר  
 
חבר מתאריך: 17.12.01
הודעות: 1,604
תכנון GUI
בתגובה להודעה מספר 5 שנכתבה על ידי moshebs שמתחילה ב "הבעיה שלי היא, שוב, המהירות"

תכנון GUI נכון לא צריך להפריע לביצועים של המערכת.

תכנון נכון של מערכת עם GUI יחולק תמיד לשני חלקים - backend וfrontend
הbackend יהיה החלק במערכת שיעשה את העבודה שאתה רוצה לעשות - המנוע.
יספק ממשק שכל רכיב UI לרבות GUI וכד' יוכל להתממשק אליו, לקרוא לפונקציות שאתה רוצה שהמשתמש יוכל לבצע.

הGUI, הוא רכיב UI שמסתמך על הצגה גרפית של האופציות. כל מה שהוא עושה זה להציג למשתמש תצוגה כלשהי, שממנה הוא יוכל לבצע בחירות, ועל הGUI לתרגם את בחירות המשתמש וקביעותיו לקריאות לפונקציות הממשק שמיצא הBACKEND.

לכן, לא משנה מה המהירות של הGUI, הריצה של התוכנה יכולה להיות בפרוסס\ת'רדים נפרדים מהGUI וככה לא תהיה הפרעה לא משנה כמה הGUI איטי...

הפגיעה היחידה בביצועים תוכל להיות בגלל שתצוגה של נתונים תתעקב... וwell.... MFC לא יהווה פגיעה בביצועים - לפחות לא כזו שתהיה גדולה יותר משימוש בGUI בכלל.

בגדול, GUI בMFC זו גישה עתיקה.
אין שום סיבה לעשות את זה ככה....
תכתוב BACKEND ב++C וFRONTEND ב#C או בסביבה אחרת שהיא נוחה יותר לעיצוב GUI מאשר MFC. (אפילו pyGtk טוב יותר מMFC)
_____________________________________
Subtle and insubstantial, the expert leaves no trace; divinely mysterious, he is inaudible.
Thus he is the master of his enemy's fate.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 18-03-2006, 11:07
  moshebs moshebs אינו מחובר  
 
חבר מתאריך: 24.12.01
הודעות: 4,168
תודה על התגובות
בתגובה להודעה מספר 7 שנכתבה על ידי cyberia_2ooo שמתחילה ב "תכנון GUI"

ל-SCRIPTER - אני בונה תוכנה שחלק גדול מהפעילות שלה הוא תיקשור דרך WINDOW MESSAGES. דרך שם היא מקבלת את הנתונים הדרושים לפעילותה, מעבדת אותם במהירות הגבוהה ביותר ומבצעת פעולות לפי תוצאות העיבוד.
ממשק החלונות יכול להיות מינימליסטי מאוד מצידי. הוא אפילו מפריע ולא ממש מעניין אותי איך הוא יראה. למעשה, הייתי מוותר עליו לחלוטין ומתכנת SERVICE או תוכנת COMMAND LINE אם לא הייתי זקוק למידע של ה-WINDOW MESSAGE. איך התוכנה נראית ויזואלית זו הדאגה האחרונה שלי.

CYBERIA - ההגיון העומד מאחורי הדברים שאתה אומר נהיר לי. אומנם לקח לי קצת זמן להתרגל לזה, משום שאת התיכנות למדתי על לינוקס שם ההגיון שונה - ולא נחשפתי בכלל לשימוש במערכת שהיא EVENT DRIVEN. כמו שכבר כתבתי לעיל, הממשק לא ממש מעניין אותי ואני רק רוצה שהוא יהיה מינימליסטי ולא יפריע למהירות הפעולה של התוכנה. לגבי תיכנות בת'רדים - אשמח אם תפנה אותי לאיזה מדריך בנושא עבור VISUAL C++.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 16-03-2006, 17:23
צלמית המשתמש של scripter
  scripter scripter אינו מחובר  
 
חבר מתאריך: 04.08.02
הודעות: 4,468
...
בתגובה להודעה מספר 1 שנכתבה על ידי moshebs שמתחילה ב "המשך שאלות בתיכנות VISUAL C++"

// הבעיה היא שכשאני מצייר חלון, אוטומטית הוא נבנה בתור דיאלוג, ואז אי אפשר להוסיף לו תפריט
נהפך "אוטומטית" לדיאלוג? אשמח אם תוכל לפרט על תהליך יצירת החלון שאתה מבצע.
בכללי, זה אמור להיות ככה (תקנו אותי אם אני טועה...)

1. יוצר תפריט ושומור אותו ב-resources.
2. יוצר Window Class - WNDCLASSEX
3. ממלא את המבנה שיצרת בשלב הקודם - שים לב לשדה lpszMenuName, פה אתה אמור "להכניס" את התפריט שלך. בטח למדת כבר איך לעשות זאת -

your_window_class.lpszMenuName = MAKEINTRESOURCE( your_menu_id );

4. מבצע Register Class (RegisterClassEx)
5. יוצר את החלון CreateWindowEx
6. ומפה כל שאר הירקות... show window, get message, updatewindow וכו' וכו'.

http://msdn.microsoft.com/library/d.../wndclassex.asp
_____________________________________
C pogrammers never die. They are just cast into void.


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #13  
ישן 18-03-2006, 19:21
צלמית המשתמש של scripter
  scripter scripter אינו מחובר  
 
חבר מתאריך: 04.08.02
הודעות: 4,468
...
בתגובה להודעה מספר 12 שנכתבה על ידי moshebs שמתחילה ב "אפשר לקבל דוגמה ל-CREATE DIALOG?"

נראה לי שבמהלך הלימוד על WinAPI, שכחת לגמרי את היסוד שעליו היא נבנתה.
כל דבר הינו חלון. כפתור? חלון. תיוות טקסט? חלון.

לגביי קליטת מס' ולצייר כמות שורות בהתאם לקלט -> קלוט את המס' תשתמש ב-CreateWindow/CreateWindowEx ע"מ ליצור N לייבלים (Labels) או תוות טקסט.

לגביי יצירת Modeless Dialog (אודה אם מישהו ייתרגם זאת לעברית )

CreateDialog(GetModuleHandle(NULL), MAKEINTRESOURCE(ID_OF_DIALOG),
NULL/*parent window*/, DialogProcedure);
את הפרמטרים אתה יכול לקרוא באתר של MSDN.
בקצרה, התהליך הוא די דומה ליצירת חלון, רק תשכח מכל הסיבוך של WNDCLASSEX.
את הדיאלוג תייצר ותכניס אותו ב-resource.
תפעיל את התוכנית, הגדר Handle, MSG וכו'.
תיצור את הדיאלוג בעזרת הפונקציה הנ"ל (לא בעזרת DialogBox, זכור)
תקבל את ה"הודעות" כרגיל, רק זכור דבר נוסף, בלולאת GetMessage, אתה חייב לזרוק את כל ההודעות שלא קשורות לדיאלוג, תשתמש ב-IsDialogMessage.

while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
if(!IsDialogMessage(g_hToolbar, &Msg))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
}
לגביי יצירת פקדים on the fly, אחרי שהבנת שהעקרון מאחורי WINAPI זה שהכל חלון, אמור להיות משימה קלה - פשוט ליצור אותם בעזרת CreateWindow.

נניח אתה רוצה ליצור תוות טקסט בצורה דינאמית

hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",
WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 0, 0, 100, 100, hwnd, /* HMENU*/NULL, GetModuleHandle(NULL), NULL);

אין הרבה מה לזכור פה, תקרא על הכל ב-MSDN.
בכללי, הפרמטר השני מציין את ה"טיפוס" של ה"חלון" שאתה רוצה לייצר.
במקרה שלנו, שמתי EDIT, כלומר, EDIT BOX.

אני אצרף דוגמא עוד הערב, כרגע אין לי מי יודע מה זמן.
בהצלחה.
_____________________________________
C pogrammers never die. They are just cast into void.



נערך לאחרונה ע"י scripter בתאריך 18-03-2006 בשעה 19:24.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 13:47

הדף נוצר ב 0.04 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2025 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר