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

عمل نافذة فى السى بلس بلس

مغلق
بدأه ™MAX في 5 يوليو 2006 · 23 رد · 2,245 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاتة

احب اعرف لو سمحتو طرق عمل ناقذة وعليها زراير فى السى بلس يلس

كل ما اعرفة هو اما عن طريق WIN API

او عن طريق السحب والافلات فى الفيجوال استيديو نفسة اقصد ( MFC )

فهل هناك طريقة اخرى

وهل ممكن ان اكتب الكود الى بيكتبة ال( MFC ) فى السى بلس بلس ( مشروع كونسل )

ويخرج لى نفس الناتج الذى يخرج عند استخدام ( MFC )

وشكرا

محارب بلا زمان

.................................................................................................................................................................................................

untitled6yk.png
#2

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

أما بدون Api تبني نافذة؟؟!! لا أظنك تستطيع عمليّاً.

هذا كود لبناء نافذة بواسطة MFC يدويّاً:

#include 



class mywin : public CFrameWnd 

{ 

public: mywin() 

{ 

Create(NULL, "ArabTeam2000"); 

} 

}; 



class app : public CWinApp 

{ 

BOOL InitInstance() 

{ 

m_pMainWnd = new mywin();

m_pMainWnd->ShowWindow(m_nCmdShow); 

return TRUE; 

} 

};





app myApp;

الكود من المشاركة:

/index.php?showtopic=18641

تلاحظ هنا لم نستخدم دوال API مباشرةً لكن دوال MFC تغلفها أي أننا نستخدم API في الخفاء ولم نلغه!

تم تعديل هذه المشاركة بواسطة إسماعيل ابراهيم في 5 يوليو 2006 في 10:34

#3

طبعاً الكود فيه مشكلة بسيطة أنه أخفى الكلمة التي بين <> ولا ادري لماذا على كل :

الجملة الاولى بعد include# ضع:

<afxwin.h>

وبس!

#4

مشكور جدا استاذ إسماعيل ابراهيم

ولكن لم اتمكن من تجربة الكود

ارجو شرح اين اضع هذا الكود لانى جربت الكونسل وطلع اخطاء

والوين 32 وطلع اخطاء

افهم من كدة ان دى تعتبر API ام كيف استحلص كود كهذا

محارب بلا زمان

.................................................................................................................................................................................................

untitled6yk.png
#5

أخي في الرابط شرحت كل شيء عن كيفية تشغيل الكود.

اقتباس
افهم من كدة ان دى تعتبر API ام كيف استحلص كود كهذا

ما فهمتك، لكن أقول : MFC هي تغلّف API ويمكنك استخدام API مباشرة من MFC أو استخدام الدوال التي وضغتها MFC "كبديل" ولكن في النهاية MFC تستدعي API من وراء الكواليس

#7

السلام عليكم

افهم من كدة ان الطريقة الاساسية فى وجود الواجة الرسومية (النوافذ ) هية عن طريق APIحتى ولو كانت عن طريق

غير مباشر

ارجو ا ارشادى الى كتب تشرح الابى اى

.......................................

الف شكر اخ hasan_aljudy على مرورك الكريم

تب امال امتى اقدر اتحكم فى بناء نافذة من الصفر يعنى اقصد لية شكل الفورم بهذة الطريقة مش بشكل تانى

او الزرار لية مش دائرية بدل ما هية مستطيلة

اذا كان ممكن انى اعدل عليها بعد ما اجيبها من الابى اى وتحويل الزرار الى ما الريد ( على ما اظن)

...............

تب لو مش موجود اصلا دوال الابى اى يعنى مثلا البرنامج مش هايشتغل على الويندوز الدوس مثلا

وشكرا

محارب بلا زمان

.................................................................................................................................................................................................

untitled6yk.png
#8

هناك بعض مكتبات الـ GUI لا تعتمد كليا على win32 api

(ملاحظة: GUI يعني واجهة رسومية .. نوافذ و ازرار .. الخ. و خي اختصار لـ graphical user interface)

هذه المكتبات تعتمد على وندوز فقط من أجل إنشاء النافذة, و لكنها تقوم برسم الأزرار و بقية العناصر بطرق أخرى.

لا اعرف مثالا لمكتبة من هذا النوع في الـ C++‎ و لكن هناك Harmonia و هي تعمل في لغة أخرى .. http://harmonia.terrainformatica.com

في الحقيقة ليست لدي خبرة في تصميم برامج بواجهات مرئية, خصوصا في الـ C++‎

اقتباس
تب امال امتى اقدر اتحكم فى بناء نافذة من الصفر يعنى اقصد لية شكل الفورم بهذة الطريقة مش بشكل تانى

او الزرار لية مش دائرية بدل ما هية مستطيلة

اذا كان ممكن انى اعدل عليها بعد ما اجيبها من الابى اى وتحويل الزرار الى ما الريد ( على ما اظن)

في الحقيقة لا اعرف.

اقتباس
تب لو مش موجود اصلا دوال الابى اى يعنى مثلا البرنامج مش هايشتغل على الويندوز الدوس مثلا

لم افهم السؤال جيدا ...

لعلك تقصد انه لا بد من وجود طريقة اخرى لعمل برامج بواجهات رسومية؟

#9

مشكور جدا استاذ hasan_aljudy على الرد الجميل

ولكن هل ممكن ان اعتمد الاعتماد الكلى على الابى اى فى حالة عمل برنامج بواجة رسومية

ام انة لن تكفى

ولو فى امثلة او كتاب يشرخ دوال الابى اى

وعلى العموم انا شغال من دروس الاساتذة الى فى المنتدى ولكن هل هناك من مزيد

ومرة اخرى اشكرك استاذ hasan_aljudy على الرد

محارب بلا زمان

.................................................................................................................................................................................................

untitled6yk.png
#10

يمكنك أن تفعل ما تشاء من ناحية شكل البرنامج، ممكن انت ترسم رسمة في فوتوشوب، وتكون هي شكل النافذة، وبرضة بدون ما تتخلّى عن API لأن API لم يوجد لإعاقة ابداعك بل وجد لمساعدتك.

تم تعديل هذه المشاركة بواسطة إسماعيل ابراهيم في 6 يوليو 2006 في 13:33

#11

السلام عليكم

أخ ™MAX عليك ان تفهم شيئ مهم

لست انت اي برنامحك الذي يرسم النافذة

بل Wind0ws هو الذي يقوم بذلك

ما على برنامجك سوى طلب ذلك من wind0ws لكي تقوم بذلك

والطريق الوحيد هو API للمحادثة مع Wind0ws

هناك طرق اخرى للرسم في الشاشة دون اللجوء ل wind0ws لكن تعمل فقط في Full screen

وعليك ان ترسم كل شيئ نقطة نقطة و خط خط

وقد لا تكون بنفس الجودة مثل Windows

هذا و الله اعلم :D

d4baa0.gif
#12

سيدى الفاضل

فى نظام النوافذ (ميكروسوفت) الازرار و كل شئ هو فى الاساس نافذة. والنافذة وضعها اافتراضى مستطيل فى العادة تمرر ابعادة عند الانشاء. و الحقيقة ان شكل النافذة عبارة عن متعدد الاضلاع polygon و يمكن تحديد شكل النافذة بعمل مجموعة نقاط فى شكل polygon و استعمال CWnd::SetWindowRgn من داخل MFC. و اعتقد الاعضاء الكرام قادرين على الافادة اكثر منى.

مجرد نصيحة ضع بعض الجهد فى التعرف على خصائص و stylesالخاصة بالنوافذ قبل الاستمرار مع عمليات تحسين المظهر.

انا ماجبتش سيرة google لكن دور فى codeguru فيه ناس مضيعة عمرها فى الشغل ده

#13
اقتباس
دور فى codeguru فيه ناس مضيعة عمرها فى الشغل ده
:)

حلوة هاي...

بصراحة كان عندي كود يقوم باستبدال النافذة بأي رسمة من عندك، اذا وجدته عندي (احتمال ضئيل) سأضعة وإلا

فـ

اقتباس
دور فى codeguru فيه ناس مضيعة عمرها فى الشغل ده
:)
#14
إسماعيل ابراهيم كتب:
يمكنك أن تفعل ما تشاء من ناحية شكل البرنامج، ممكن انت ترسم رسمة في فوتوشوب، وتكون هي شكل النافذة، وبرضة بدون ما تتخلّى عن API لأن API لم يوجد لإعاقة ابداعك بل وجد لمساعدتك.

مشكور استاذ إسماعيل ابراهيم على المعلومة الجميلة ولكن هل من مثال ولو بسيط :D

محمدعبد العزيز كتب:

السلام عليكم

أخ ™MAX عليك ان تفهم شيئ مهم

لست انت اي برنامحك الذي يرسم النافذة

بل Wind0ws هو الذي يقوم بذلك

ما على برنامجك سوى طلب ذلك من wind0ws لكي تقوم بذلك

والطريق الوحيد هو API للمحادثة مع Wind0ws

هناك طرق اخرى للرسم في الشاشة دون اللجوء ل wind0ws لكن تعمل فقط في Full screen

وعليك ان ترسم كل شيئ نقطة نقطة و خط خط

وقد لا تكون بنفس الجودة مثل Windows

هذا و الله اعلم :D

مشكور استاذ محمدعبد العزي على الرد

حضرتك تقصد نظام الالعاب ام دى طريقة عادى تستخدم فى البرامج

وارجو مثال صغير

PointerVC كتب:
سيدى الفاضل

فى نظام النوافذ (ميكروسوفت) الازرار و كل شئ هو فى الاساس نافذة. والنافذة وضعها اافتراضى مستطيل فى العادة تمرر ابعادة عند الانشاء. و الحقيقة ان شكل النافذة عبارة عن متعدد الاضلاع polygon و يمكن تحديد شكل النافذة بعمل مجموعة نقاط فى شكل polygon و استعمال CWnd::SetWindowRgn من داخل MFC. و اعتقد الاعضاء الكرام قادرين على الافادة اكثر منى.

مجرد نصيحة ضع بعض الجهد فى التعرف على خصائص و stylesالخاصة بالنوافذ قبل الاستمرار مع عمليات تحسين المظهر.

مشكور جدا اخ PointerVC على الرد الجميل ولكن كل ما اودة التحكم التام فى الوجهة الرسومية من داخل كود السى بلس بلس

PointerVC كتب:
انا ماجبتش سيرة google

ههههههههههههههههههههههههههههه :lol: :lol:

إسماعيل ابراهيم كتب:
:)

حلوة هاي...

بصراحة كان عندي كود يقوم باستبدال النافذة بأي رسمة من عندك، اذا وجدته عندي (احتمال ضئيل) سأضعة وإلا

فـ

:)

يا ريت يا ستاذا اسماعيل

انا صراحة سعيد جدا بيكم وبردودكم المفيدة

وشكرا

تم تعديل هذه المشاركة بواسطة ™MAX في 7 يوليو 2006 في 03:17

محارب بلا زمان

.................................................................................................................................................................................................

untitled6yk.png
#15

هناك جزء من الـ win api يسمى GDI او Graphics Device Interface تستطيع من خلاله رسم ما تشاء على نافذتك. و يمكن استخدام الدالة BitBlt من اجل رسم الصور التي تريد.

الموضوع فيه شيء من التعقيد, و لكن يعني ليس صعب جدا. تحتاج لقراءة بعض المراجع.

هناك بعض الدروس بالانجليزي عالنت:

http://www.codeproject.com/bitmap/gditutorial.asp

http://www.winprog.org/tutorial/bitmaps.html

#16

هذا كود شبيه باللذي كان عندي..

من هنا http://www.codeproject.com/dialog/CRegionCreator.asp

لكن ربما لا تتمكن من انزاله الا باشتراك لهذا فأنا أنزلته وأرفقته هنا..

قام المبرمج ببناء نافذة عادية لا تهمنا... لكن قام أيضا ببناء نافذة أخرى - انظر اليها، أليس هذا ما تريد :)

لاحظ أن الرسمة موجودة في المجلد res يمكنك تغييرها كما تشاء.

<في الكود الاول الذي كان عندي قام المبرمج بإخفاء اللون الوردي، ولكن لا اذكره صراحة.>

روابط ذات صلة :

http://www.codeproject.com/dialog/skinsyse.asp

و

http://www.codeproject.com/dialog/#Skins+%26+Advanced+UI

CRegionCreator_demo.zip

تم تعديل هذه المشاركة بواسطة إسماعيل ابراهيم في 7 يوليو 2006 في 14:53

#17

الف شكر استاذ hasan_aljudy على الامثلة الجميلة

وار ان ادرس جيدا الابى اى اولا ثم انتقل الى GDI

ولكن هل من كتب تشرح api شرح وافى

وشكرا

محارب بلا زمان

.................................................................................................................................................................................................

untitled6yk.png
#18

الف شكر استاذ إسماعيل ابراهيم على الامثلة الجميلة والمفيدة

بالذات المثال الاول بتاع موقع codeproject

وبالنسبة للمثال المرفق جميل جدا ومشابة للمثال الاول

ولكن هل كل دة معمول بدوال الابى اى ام بماذا

اذا كان بالابى اى فارجو ارشادى الى طريق دراسة الابى اى كاملة باذن الله

وشكرا

محارب بلا زمان

.................................................................................................................................................................................................

untitled6yk.png
#19

أخ ™MAX المثال المرفق معه الكود كاملا.. يمكنك مطالعته، بالذات الدالة CreateRegionFromBitmap

هذه الدالة تصنع الRegion من خلال صورة..وهي سهلة..

#20

الف شكر استاذ إسماعيل ابراهيم انا مش عارف اشكرك اذاى على التجاوب معايا :D

ولكن انا مستوايا للاسف ضعيف جدا فى السى بلس بلس B) B) :unsure:

فالبنسبة للدالة الى حضرتك زكرتها انا تاية ومش عايز ادخل من الوسط

وانا احتفظت بها لوقتها

فانا شغال دلوقتى بذاكر سى بلس بلس ودوال الابى اى مع بعض

فارجو ان تتحملونى يعنى مثلا استفسار بسيط

زى بتاع اليوم ممكن يخليكم تقولو عليا لسة مش عارف حاجة وعمال يسال :lol: :huh:

بس انا كنت شغال سى شارب و فى حاجة ملغبطانى

يعنى الكود دة المفروض انة يستمر لو قلتلة y

لو غيرت الاف الى هويل هاتشتغل لكن لية ما تشتغل وهيا اف

فى السى شارب تقريبا كانت شغال معايا لية هنا بقة مش شغالة فياريت

#include <iostream.h>

int main()
{



										char exitx ='y';

	if (exitx == 'y')
	{
		cout <<"enter u first nump";
										int firstn;
	cin>>firstn;
	cout <<"enter u thcand nump";
										int thcand;
	cin >> thcand;
	cout <<"enter u opreator   + - * /";
										char opreator;
	cin>> opreator;


		if (opreator =='+')
			{
			cout <<firstn + thcand;
			}
		else if(opreator == '-')
			{
		cout <<firstn - thcand;

			}
		else if (opreator == '/')
			{
		cout <<firstn / thcand;

			}
		else if(opreator == '*')
			{
		cout <<firstn*thcand;
			}
		else 
			{
		cout <<"go to hill";
			}

		cout <<" \n do need moor?  y for moor: ";

		cin >>exitx;


	}



}

تم تعديل هذه المشاركة بواسطة ™MAX في 8 يوليو 2006 في 11:45

محارب بلا زمان

.................................................................................................................................................................................................

untitled6yk.png
#21

الجواب المختصر هو ان if تنفذ مرة واحدة بينما الـ while تستمر في التنفيذ الى ان يصبح الشرط false.

#22

يعنى افهم من كدة ان دى امكانيات الاف مش خطا فى الكود

الف شكر استاذ hasan_aljudy على الرد ااجميل والسريع

وارجو تتحملو شوية اسئلة من مبتدا فى السى بلس بلس

وشكرا

محارب بلا زمان

.................................................................................................................................................................................................

untitled6yk.png
#23

زي ما قال hasan_aljudy.

انظر الى برنامجك...البرنامج ينفذ الاوامر من أعلى الى اسفل حتى يصل الى { الاخيرة ينتهي البرنامج.. كيف تتوقع من البرنامج في آخر سطر أن يعود للبداية.؟؟

اقرأ عن الحلقات ، وستجد الطريقة.

#24

اهلا بيك استاذ إسماعيل منور المكان

فعلا انا شغال فى اللوبس lops

بس انا عملتها بــ goto

بس لقيت منها تحزير لية مش فاهم

عن اذنكم اكمل حرررت

مشكور جدا على الروح الجميلة

محارب بلا زمان

.................................................................................................................................................................................................

untitled6yk.png

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

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