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

كيف نغير دقة الشاشة في++ c

مغلق
بدأه short wave في 24 نوفمبر 2003 · 6 رد · 6,716 مشاهدة · في قسم المواضيع الهامة في قسم السي /سي++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أرجو من الأخوة مساعدتي في هذا الموضوع فلم أستطع إيجاد تابع الapi الذي يساعدني في ذلك .

ولكم جزيل الشكر ..

#2

السلام عليكم ,,,

ياأخي الكريم جاهدت سابقا لمعرفة الدالة التي تقوم بذلك أنا أيضا ... لكني توصلت الى الدوال التابعة لل DirectX API وخاصة DirectDraw ...

توجد دالة تدعى SetDisplayMode () لها برامترات للدقة الشاشة ودقة الالوان ,,,

وأنا أعرف التعامل مع واجهات DirectX 8 و 9 و7 لذا سأفترض أن لديك واجهة DirectDraw 7 وبالمناسبة هي الأخيرة .,,,,حتى الان ,,

لن أفصل الان فقط امهلني قليلا وسأعطيك ردا مفصلا ...

عموما توجد 3 دوال مهمة لذلك هي

DirectDrwCreateEx لأنشاء الكائن LPDIRECTDRAW ,,, وهو الكائن الذي به الدالة SetDisplay Mode التي سنستخدمها ,,

لكن قبل ذلك يجب أن نستدعي الدالة SetCooperativeLevel ,,لأتاحة امكانية تغيير دقة العرض للمستخدم ...

هذا مؤقتا ,,,

وبالتوفيق ,,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#3

تغير عرض الشاشة فى Win32 :

هذه دالة تقوم بالذى تريده و نحتاج ملفات windows.h من غير directx :)

void ChangeResolution(int width, int height)

{

DEVMODE dmSettings;

memset(&dmSettings,0,sizeof(dmSettings));

if(!EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&dmSettings))

{

MessageBox(NULL, "Error in Enum Display Settings", "Error", MB_OK);

return;

}

dmSettings.dmPelsWidth = width;

dmSettings.dmPelsHeight = height;

dmSettings.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;

int result = ChangeDisplaySettings(&dmSettings,0);

if(result != DISP_CHANGE_SUCCESSFUL)

{

MessageBox(NULL, "Display Mode Not Compatible", "Error", MB_OK);

PostQuitMessage(0);

}

}

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

فأنا فى الخدمة

#4

السلام عليكم ,,,

ماشاء الله عليك ياأخ Ahmedvc فخير الكلام ماقل ودل ,,,,

ولم تترك لي ماأضيفه فهذه الدالة تفي بالمطلوب تماما ,,,

لكن اذا رغبت أخي short wave بالمزيد يمكن أن أريك طريقة ال DirectX ,,, لكنها تحتاج الى مكتبة DDraw.LIB ,,,

وبالتوفيق

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#5

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

في الحقيقة أنا شاكر جدا تعاونكم يا أخ Ahmedvc ويا أخ HGB

وبصراحة فأنا للمرة الأولى أتعامل مع المنتديات وقد أعجبت بالتعاون من قبل الجميع

إن عدنا إلى السؤال المطروح سابقا أريد أن أضيف أنني أريد عمل DLL صغيرة تساعد المبرمج في لغة ثانية أن يستفيد منه في تغيير إعدادات الشاشة وليكن بعلمك أني لست محترفا وإنما أننا مبتدىء في C++ ولم أتعامل حتى الآن مع البرمجة المرئية فيها لذلك

حبة حبة يا علام

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

EnvironmentVariable("ScreenResolution", WindowResolution) = "800,600"

فإن كان هناك أي مساعدة أخرى فأنا لكممن الشاكرين

والسلام يا إخوان

تم تعديل هذه المشاركة بواسطة short wave في 24 نوفمبر 2003 في 23:37

#6

السلام عليكم ,,,

ياأخي الكريم لاأعتقد أن هناك داعي لاستخدام ال EnvironmentVariable لانشاء ال DLL .. يكفي ان تكتب ال DLL بالسي ++ وتجعله يستلم فقط بارمترين أو ثلاث من الانواع الصحيحة int

ليسهل التكامل بين اللغات ... وداخل هذا ال DLL يوجد استدعاء صريح للدالة ( ChangeResolution(int width, int height الذي تفضل أخي Ahmedvc

بكتابتها ...

وطبعا ستمرر البارمترات القادمة من اللغة الاخرى الى هذه الدالة .. وسيتم كل شيء باذن الله ,,,

لكن توجد عدة نقاط حول التكاملية القصوى بين لغات البرمجة ,,, يمكنك كتابة دالة DLL يمكن استدعاءها من عدد كبير من لغات البرمجة .. ولكن عند تضمين لغات كال JavaScript

VisualBasicScrit يجب عندها كتابة DLL بحيث يكون COM ,,

ولاأعتقد انك تريد ان تغوص لهذه الدرجة ,,,

لذا فقط اكتب دالة ال DLL وضع يها الدالة اعلاه وسيعمل الكود باذن الله ...

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#7

السلام عليكم,

لاحظت أنها فاتتني نقاشات مهمة.

فيا ريت نواصل في مثل هذه المواضيع بعد عطلة العيد إن شاء الله.

عيد سعيد للجميع وبالتوفيق إن شاء الله.

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

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