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

اضافة صورة للنافذه الرئيسية

بدأه خيالي... في 7 أغسطس 2011 · 3 رد · 1,173 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كيف يمكنني اضافة صورة للنافذه الرئيسية

هل هناك بارامتر لاضافه صورة في الدالة CreateWindowEx

ام ان هناك داله خاصه لاظهار الصورة في النافذه الرئيسية

+++++++

بالنسبة لاضافه ايقونه

اعرف انه في اجراء النافذه invoke LoadIcon,NULL,IDI_APPLICATION

ولكن ماهي الخطوات التفصيلية

هل اقوم بتعريف ثابت معين او مقبض وكيف اربطه بالصوره لاظهاره

حاولت وضعها بأستخدام برنامج RADASM ولكني لم استطع

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

تم تعديل هذه المشاركة بواسطة خيالي... في 7 أغسطس 2011 في 22:17

#2

قبل استدعاء الداله CreateWindowEx تقوم بإنشاء الـ class التى تحتوى على الـ parameters المشتركه للنوافذ التى ستستخدمها، هذه البيانات يتم تخزينها داخل التركيب WNDCLASSEX و الذى احد عناصره هو hIcon و هو الصوره التى ستظهر للنافذه، إذا كانت NULL عندها سيضع لك نظام التشغيل واحده.

و الله ولي التوفيق

مدونتي: C++ Tips and Tricks

#3

بارك الله فيك اخي الكريم

+++++++++++++++++++++++++++++++

بالنسبه للايقونه

هل اقوم بتعريف اسم الصوره في Data

مثال

IMG   dd    (image.ico)

ثم اضيف الاسم في اجراء النافذه

invoke LoadIcon,NULL,IMG

+++++++++++++++++++++++++++

بالنسبه لاضافة صوره في وسط البرنامج وليس ايقونه ... كيف يتم ذلك ..وشكرا

تم تعديل هذه المشاركة بواسطة خيالي... في 11 أغسطس 2011 في 05:23

#4

بالنسبه للأيقونه تقوم بإضافتها كـ resource داخل الملف التنفيذي.

بالنسبه للصوره فلا توجد دالة معينه لتقوم بذلك و لكن يتم اكتر من داله لرسم الخلفيه بأكثر من طريق، على سبيل المثال يمكننا تحميل الصوره بإستخدام LoadImage و سيتم إرجاع HBITMAP، قم بتمرير الـ handle للداله CreatePatternBrush لتعود لك بـ HBRUSH، قم بوضع القيمه المعاده داخل العنصر hbrBackground.

يعيب الطريقه السابقه انه إذا كان حجم الصوره اقل من حجم النافذه سيتم تكرار الصوره حتى يتم ملء المساحه كلها و هذا منطقي فنحن نستخدم brush.

توجد طريقه اخرى عن طريق تحميل الصوره و رسمها فى منتصف DC يكون مطابق للـ WindowDC و بعدها يتم نسخ محتويات الـ DC داخل WindowDC، لاحظ انك ستكون قمت بعمليات الـ Stretch و الـ align للصوره اثناء وضعها داخل الـ DC و بالتالي بعد النسخ داخل الـ WindowDC ستجد الصوره ظهرت كخلفيه للنافذه، لابد ان تقوم بعمل Intercept للرساله WM_ERASEBKGND و ذلك لتقوم بالرسم مع كل مره يطلب منك النظام ذلك.

و الله ولي التوفيق

مدونتي: C++ Tips and Tricks

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