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

أريد توضيح لهذا الكود :خاص بتلوين النافذة

مغلق
بدأه eias في 30 أكتوبر 2005 · 15 رد · 1,122 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الحقيقة سألت إخواننا الأجانب عن تغيير لون خلفية النافذة و أنتم تعلمون أنهم يردون بكلمة والحمد لله و ليس مثلنا نحن العرب :lol: .

أعطوني هذا الرابط

http://support.microsoft.com/default.aspx?...kb;en-us;103786

و كان فيه هذا الكود:

 BOOL CSampleView::OnEraseBkgnd(CDC* pDC)
   {
      // Set brush to desired background color
      CBrush backBrush(RGB(255, 128, 128));

      // Save old brush
      CBrush* pOldBrush = pDC->SelectObject(&backBrush);

      CRect rect;
      pDC->GetClipBox(&rect);     // Erase the area needed

      pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(),
          PATCOPY);
      pDC->SelectObject(pOldBrush);
      return TRUE;
   }

لكني لم أعرف الكود لApi أم MFC ..و لم أعرف ولا متغير او مؤشر فيه ...ممكن توضيحات لأنه أساسا لم يعمل معي ..

#2

الصفحة تقول انها بالـ MFC!!

اعتقد هذا المثال لن يعمل لوحده, لكن هذا يعتمد على الكلاس CSampleView هل هو جزء من الـ mfc ام انه مجرد شي مستخدم في هذا المثال؟ <<< و انا بصراحة ما اعرف mfc

#3

سلام عليكم

ده برنامج mfc

حب تسميات mfc هذا مشروع اسمه Sample و يكون CSampleView هو المسؤل عن ادارة نافذة العرض اولاً و اخيراً هو مشتق من CWnd. و هذا الاخير يحتوى على دالة تنفذ عند استقبال WM_ERASEBKGND و اسمها OnEraseBkgnd

و هذا الكود ببساطة يكتب داخل برنامج النافذة للتعامل مع WM_ERASEBKGND بعدها ايجاد * pDC

و الباقى قص و لصق

و السلام

#4

اضافة

الدوال الاساسية الموجودة فى البرنامج و الدوال المناظرة

ال CDC يقوم بعمل HDC hdc;

pDC->SelectObject(&backBrush);

تتحول الى

 hbr = GetStockBrush (LTGRAY_BRUSH);

SelectBrush (hdc, hbr);

كذلك

 pDC->GetClipBox(&rect);

نستعمل

 GetClientRect (hwnd, &rect);

ارجو ان يكون الأن اوضح

#6

انا الي شفته انها فنكشن يعني انت بتحطها في البرنامج

وعلى حسب بس ماعرف هي mfc والا ايش؟؟

#7

البرنامج مكتوب بأسلوب MFC والله العظيم

_____________________________

C Language && Windwos_API

_____________________________

#8

ليس مشكلة بأي طريقة مكتوب :lol:

ولكن المشكلة أنه لم يعمل معي حتى الآن ..ممكن تعطوني مثال فيه ..بس ياريت لو في توضيح أكثر..

#9

اذا تريد على api ... اكيد ممكن : )

مافيه فرق كثير ..

اذا فهمتها بapi .. فهمتها على mfc .

انا فهمت كود mfc مباشرة ... بالرغم من اني لا افقه في mfc شيء .

نعطيك الحل بالapi . ؟؟

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#10
اقتباس
ليس مشكلة بأي طريقة مكتوب

ولكن المشكلة أنه لم يعمل معي حتى الآن ..ممكن تعطوني مثال فيه ..بس ياريت لو في توضيح أكثر..

طيب ممكن نعرف أنته كيف تستخدمه....يعني مع الــWin32 أم مع الـMFC ؟؟

و أين المكان اللي تكتب بيه الكود؟؟ و شو الأخطاء اللي تطلع لما تحاول تستخدمه؟؟

بأختصار.....هذا الكود لا يشتغل الا مع الــMFC بصورته الحالية. (راجع مشاركة 3 للأخ PointerVC)

لكن ممكن تحويله الى APIs أذا كنت ما تستخدم الــMFC.

تم تعديل هذه المشاركة بواسطة MTI في 1 نوفمبر 2005 في 01:00

comp2.gif

#11

اتفق مع الاخ MIT

فى اهمية ارسال البرنامج. و العملية بسيطة هو جاب المستطيل الخاص بالنافذة و خصص له لون تعبئة. و يوجد طرق اسهل لتغير اللون فى الخلفية و لكن البرنامج السابق جيد فى انه ممكن استخدامه فى عمل خلفية لها نقش معين مش مجرد لون

ارسل ما تقوم به حتى نرى ما هو

و السلام

#12

أنا ما عندي مشكلة من يدكم هذه إلى يدكم هذه ..أعمل على الاثنين ..بس المهم التوضيح:lol:

كتبته وحده كدالة و لكن أعتقد انه لا فائدة من وضع ما قمت به ..لانه خرابيش ..اعتبروني لم أعمل شيء

#13
eias كتب:
كتبته وحده كدالة و لكن أعتقد انه لا فائدة من وضع ما قمت به

في الـسي لا يجوز وضع الـدالة مباشرة :rolleyes: , لازم أكو declration و definition

الكومبايلر راح يعرف بوجود الـfunction من الـdeclration

و يعرف شنو اللي يسويه الـfunction من الـdefinition

أنته بس عملت definition.

طبعا أكو حالة تمكنك من أنه تجمع بين الأثنين لكن غير مفيدة للبرنامج اللي تعمله خاصة و أنه هذا الـfunction هو داخل class يعني مو منفصل عن أي أرتباط.

طيب ....السؤال اللي بذهنك....كيف نضيفه؟

راح أكتبلك الطريق لأضافة أي function مرتبط برسالة مثل WM_ERASEBKGND.

راح أفترض أنه أنته عندك برنامج MFC عادي ..... و الشرح هذا لـVC++6.

1- من قائمة view قم بأختيار class wizard

2- من النافذة اللي تطلع...أبحث على كلمة class name..تحتها مباشرة راح تجد أحد الـclasses .....قم بأختيار class آخر و لازم يكون بنهايته كلمة view ......يعني لو كنت أخترت أسم البرنامج مثلا Background راح يكون أسم الclass هو CBackgroundView.

3- تحته هذا الأختيار مباشرة أكو كلمة messages و تحتها قائمة......من القائمة نختار أسم الرسالة اللي نحب نسوي دالة تنفذ عندما ترسل هذه الرسالة......و حاليا راح نختار WM_ERASEBKGND.

4- أضغط على Add Function و هذا موجود على اليمين.

5- بعدها أضغط على Edit Code و أكتب محتويات الـfunction اللي بالأعلى بداخل الــfunction اللي راح يظهر.............أو.............من قائمة FileView على اليسار, أختار الفايل اللي منفذ بيه الـclass ( و اللي راح يكون حسب مثالنا backgroundView.cpp) و أبحث عن اسم الـfunction و أكتب فيه الكود نفسه.

و بس :D

ممكن تضيفه بدون الـclass wizard, لكن لازم تعرف الـparameters اللي في أي دالة.

تم تعديل هذه المشاركة بواسطة MTI في 2 نوفمبر 2005 في 11:56

comp2.gif

#14

السلام عليكم

الحقيقة اخي الكريم فتحت المعالج فلم يتعرف البرنامج على الدالة ..لم يجدها ...و لكن هل بالفعل هذه دالة..نحن كنا نعرف الدالة بالConsole و نستخدمها مباشرة..و هل فعلا هذه الدالة قادرة على تغيير لون الخلفية ..وحدها.

وشكرا لك

#15
 RECT rc
HDC hdc 
.
.
.
.

case WM_ERASEBKGND: 
    hdc = (HDC) wParam; 
    GetClientRect(hwnd, &rc); 
     SetViewportExtEx(hdc, rc.right, rc.bottom, NULL); 
    FillRect(hdc, &rc, (HBRUSH)CreateSolidBrush(RGB(255,0,0)) ); 

break;

يعني هذه تلميحة فقط ./

الرسالة WM_ERASEBKGND:

تأتي اذا صغرت النافذة او صارت فوقها نافذة ... يعني تأتي اذا كان هناك حاجة لها ..

تقوم بوضع لون للخلفية == لون wc.background ... احد اعضاء الفئة wc ...

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#16

السلام عليكم

شكرا أيها الشمري ..كل عام و أنت بخير

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

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…