الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مافائدة إعطاء Variables للأدوات

مغلق
بدأه eias في 12 نوفمبر 2005 · 7 رد · 659 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم..

إخواني الكرام ..الحقيقة أريد الاستفسار في MFCعن إعطاء قيم للأدوات مثل IDC_EDIT..

رأيت في الأقراص عديمة التفهيم أنه كلما أراد أن يتعامل مع EDIT لكي يدخل فيها نص أو ينسخ أو..يذهب للمعالج MFC

ClassWizard ثم للتبويب Member Variables ثم يحدد الاداة IDC_EDIT1مثلا ثم يختار Add Variable ثم

يعطيها اسم مثل m_ed و بعدها يذهب للبرنامج و يكتب كودات مثل :

m_ed.MakeUpper();

m_ed.Empty();

و غيرها أريد أن أعرف :

أولا : ما الذي قام به عندما عمل Variable جديد .

ثانيا: أنا قمت بنفس الكودات و لكن لم تنجح معي..كيف أستطيع أكتب كود مثل

m_ed.MakeUpper();

يعني يعدل على محتويات ال m_ed التي هي ال Edit1..

وشكرا لكم.

#2

لاحظوا إخواني الكرام لقد قمت بتعديل الكود بالشكل

UpdateData();

m_ed.MakeLower();

UpdateData(FALSE);

فنجح ..ولكن ما الذي حصل..عرفت بأن UpdateData يقوم يتحميل المعلومات من EDIT1

طيب و عند إعطاءه القيمة FALSE ما ذا يحصل

#3
اقتباس
أولا : ما الذي قام به عندما عمل Variable جديد .

هذه اساسيات API :)

تعطي الاداة ID...معرف معين .. حتى تتمكن من التواصل معها عن طريق بعض الدوال او الرسائل .

هكذا

const int ID = 10001;

ثم

hEdit =CreateWindow(.............................,(HMENU)ID,...........);

الان ترسل للاداة عن طريق SendDlgItemMessage

او

تتعامل معها اذاارسلت سائل مثلا

 switch(msg)
{
case WM_COMMAND:
              if( HIWORD(wParam)==EN_CHANGE)
{
              if(LOWORD(wParam)==ID)
                .
                 .
}
break;

هذه فائدتها ... فمثلا في المثال السابق ..

الرسالة WM_COMMAND تحمل مايمسى بـ notification message

في HIWORD(wParam)

وهو هنا .. التغيير في الاداة .

اما (LOWORD(wParam)

فيحمل ID الذي وقع فيه الحدث وهو EN_CHANGE ..

هذه احد استخدامات ID ..

اذا استعملت RESOURCE .. فانه بنفسه ينشئ الاداة و ID ...

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#4

شكرا لك أخي الكريم الشمري يا رجل كل ما كتبت لك مثال MFC بتجاوبني Api ل :lol: خلص تأكد أني رح أرجع للAPI بس أتعلم ال

MFC جيدا..ولكنك لم تجاوبني على أهم جزء من السؤال ما هي ال

UpdateData(FALSE);

أقصد الآلية يعني تحميل و حذف..ماهذا المنطق :lol:

#5

انا جربت الـ MFC مره واحده من باب التجربه , طبعا كان بمساعدة كتاب

ما اتذكره حول المتغير الذي يتحدث عنه إياس , أنه من نوع CString

يتم ربطه مع الأداه كـ Buffer للبيانات , بحيث يتم التعامل معه في البرنامج لأن الكلاس CString غنيه جدا وسهلة التعامل معها , طبعا هذا ليس متغير عادي انما هو Object من الكلاس CString

لهذا يمكن استدعاء أي داله من دوال هذه الكلاس فقط بوضع "." بعد اسم الـ Object

تأتي وظيفة UpdateData , والتي تأخذ القيمه TRUE أو FALSE أي أن لها حالتان عند استدعائها

مع TRUE تقرأ من ال EDIT1 وتضع في ال Buffer , أي أنها للادخال

مع FALSE تقرأ من ال Buffer و تضع في ال EDIT1 , للإخراج

UpdateData

تم تعديل هذه المشاركة بواسطة Asm4all في 14 نوفمبر 2005 في 04:17

#6

شكرا لك أخي الكريم أحمد أو Asm4all أو عاصم :lol:

فعلا هذا الBuffer ما كنت أبحث عنه ...و هذا يعني أني قادر ان أعمل كل التعديلات على الأدوات بهذه الطريقة .

شكرا لك.

#7
اقتباس
هذا يعني أني قادر ان أعمل كل التعديلات على الأدوات بهذه الطريقة

عند قيامك بعمل اضافة لمتغير فيجب ان تلاحظ ان هناك نوعان

Control variable

Value Variables

الاول لكل ما له علاقة بالتحكم بالاداة كأنشاء اداة وتحديد الحجم اي الخواص الخاصة به

الثاني من اسمه يمكنك من التعامل مع البيانات الخاصة بالاداة

"خيركم من تعلم العلم وعلمه". ..........استغفر الله. ........ اللهم صلي وسلم على سيدنا محمد

احمد عبد الحميد ابوغرارة

CodeGuru CodeProject CGTalk

#8

شكرا لك أخي الكريم أحمد3d كنت الحقيقة فعلا انتبهت لهذا الأمر و لكن لم أكن أعرف بالضبط عمله..شكرا لك

هذا الموضوع مغلق.

مواضيع مشابهة