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

اعادة ضبط الشاشة برمجيا

بدأه Salah Al-Samawi في 21 أبريل 2012 · 1 رد · 964 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اذا عملنا برنامخ يحتاج لاعدادات شاشة خاصة يمكن ان نغير اعدادات الشاشة عند فتح الشاشة ثم نعود للاعدادات السابقة عند غلق البرنامج

uses ShellApi;
var
  DefWidth, DefHeight, BPP: word;
...

procedure SaveSettings;
var
  DC: hDC;
begin
  DefWidth := Screen.Width;
  DefHeight := Screen.Height;
  DC := CreateDC('DISPLAY', nil, nil, nil);
  BPP := GetDeviceCaps(DC, BITSPIXEL);
end;

procedure SetScreen(BPP:byte;width,height,FR:integer);
var
  D: TDevMode;
  h: HWND;
begin
  h:=0;
  D.dmDeviceName:='DISPLAY';
  D.dmBitsPerPel:=BPP;
  D.dmDisplayFrequency:=FR;
  D.dmPelsWidth:=Width;
  D.dmPelsHeight:=Height;
  D.dmFields:=DM_BITSPERPEL+DM_PELSWIDTH+DM_PELSHEIGHT+DM_DISPLAYFREQUENCY;
  D.dmSize:=SizeOf(D);
  if ChangeDisplaySettings(D,CDS_TEST)=DISP_CHANGE_SUCCESSFUL then
    ChangeDisplaySettings(D,CDS_UPDATEREGISTRY)
  else
    MessageBox(h,'This mode is not supported by your video.',
    'Failed to change mode', MB_ICONWarning);
end;

مثال الاستخدام:

SetScreen(32,800,600,80); 
//32 بيت   
 //800*600   
 //80 قيقا قيرتز

للعودة للاعدادات السابقة:

SetScreen(BPP,DefWidth,DefHeight,80);

تم تعديل هذه المشاركة بواسطة Salah Al-Samawi في 21 أبريل 2012 في 10:17

1

اللهم احفظ اليمن و أهلة و بلاد المسلمين من كل مستبد و ظالم. و من كل شر!!!

#2

شكرا لك اخى

جزاك الله خيرا وحفظ اليمن وأهله :)


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

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