Konu: Ekran Çözünürlüğü nü VFP den değiştirmek...
Ekran çözünürlüğünü vfp içinden değiştirme olanağımız varmı acaba..? Yada default 1024*768 olarak exe dosyamızı çağırabilirmiyiz?
Teşekkür ederim...
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
fox4um » Kodlama ve Komutlar » Ekran Çözünürlüğü nü VFP den değiştirmek...
Ekran çözünürlüğünü vfp içinden değiştirme olanağımız varmı acaba..? Yada default 1024*768 olarak exe dosyamızı çağırabilirmiyiz?
Teşekkür ederim...
Genelde bu sorunun cevabi, kullanicinin yerine onun ekran cozunurluguyle oynama.
Gene de kullaniciya sorarak yapmak istersen:
*SetScreenresolution.prg
Lparameters tnWidth,tnHeight,tnFrequency
#Define ENUM_CURRENT_SETTINGS -1
#Define CDS_UPDATEREGISTRY = 0x01
#Define CDS_TEST 0x02
#Define DISP_CHANGE_SUCCESSFUL 0
#Define DISP_CHANGE_RESTART 1
#Define DISP_CHANGE_FAILED -1
#Define DM_PELSWIDTH 0x00080000
#Define DM_PELSHEIGHT 0x00100000
#Define DM_DISPLAYFREQUENCY 0x00400000
Local lpDevMode,result
Declare Integer EnumDisplaySettings In win32API ;
string deviceName,;
integer modeNum, ;
string @ lpdevMode
Declare Long ChangeDisplaySettings In win32API ;
string lpDevMode, ;
integer dwflags
lpdevMode = Replicate(Chr(0),512)
EnumDisplaySettings(0,ENUM_CURRENT_SETTINGS,@lpdevMode)
*!* ? "Current settings are:",;
*!* CTOBIN(Substr(m.lpdevMode,109,4),"4RS"),;
*!* CTOBIN(Substr(m.lpdevMode,113,4),"4RS")
* Width and Height
lpdevMode = Stuff(m.lpdevMode,109,4,Int2DWord(m.tnWidth))
lpdevMode = Stuff(m.lpdevMode,113,4,Int2DWord(m.tnHeight))
If !Empty(m.tnFrequency)
lpdevMode = Stuff(m.lpdevMode,121,4,Int2DWord(m.tnFrequency)) && Frequency
lpdevMode = Stuff(m.lpdevMode,41,4,;
Int2DWord(Bitor(DM_PELSWIDTH,DM_PELSHEIGHT,DM_DISPLAYFREQUENCY))) && dmFields
Else
lpdevMode = Stuff(m.lpdevMode,41,4,;
Int2DWord(Bitor(DM_PELSWIDTH,DM_PELSHEIGHT))) && dmFields
Endif
result = ChangeDisplaySettings(m.lpdevMode,CDS_TEST)
If !( result = DISP_CHANGE_SUCCESSFUL )
Messagebox("Mode is not supported",0+48,'Monitor settings')
Else
ChangeDisplaySettings(m.lpdevMode,0)
TEXT to m.lcSetting noshow
Your screen resolution has been changed.
Press [Yes] to keep.
Will automatically restore your resolution in 30 seconds.
ENDTEXT
If Messagebox(m.lcSetting,4+64,'Monitor settings',30000) != 6
ChangeDisplaySettings(0,0) && restore
Endif
Endif
Function Int2DWord(tInt)
Local lcDWord,ix
lcDWord = ''
For ix=1 To 4
lcDword = m.lcDword + Chr( Int(m.tInt/256^(m.ix-1)) % 256 )
Endfor
Return m.lcDword
Endfunc
Bu arada kod eski Int2DWORD yerine VFP9daki Bintoc() yeniliklerini kullanabilirsin.
BinToc(m.tnWidth,"4RS") gibi
Ekran çözünürlüğünü vfp içinden değiştirme olanağımız varmı acaba..? Yada default 1024*768 olarak exe dosyamızı çağırabilirmiyiz?
Teşekkür ederim...
Çetin!in dediği gibi oyun ya da interaktif bir görsel eğitim programı yapmıyorsan, pek hoş birşey değil bence. Ben mesela bir muhasebe programının beni belli bir rezülasyona zorlamasına kızardım doğrusu...
Bunu istememin sebebi piyasada hala 1024*768 çözünürlüğün altında birçok çalışanın olması. Ve bu kullanıcıların maalesef "BİLİNÇSİZLİĞİ" . Bazı formlarım çok dolu ve command buton vb. leri max width' e göre ayarlamam imkansız. Demo programı indiripte kullanmaya çalışan bazı müşterilerin telefon edip "Hasar analiz modülünde ÇIKIŞ DÜĞMESİ YOK" laflarından ve çözünürlüklerini telefonla 20 dakikada ayarlatmaktan bıktım. Onun yerine "Bu prg en iyi şu çözünürlükte çalışır" Uyarısını yazdığımdada "... yani şimdi hangi tuşa basmamız gerekiyo" sorusu ile karşılaşıyorum. Keşke şu kullanıcılar bilgisayar kullanmanın sadece fiyat pazarlığı olmadığını anlayabilseler.
Bunu istememin sebebi piyasada hala 1024*768 çözünürlüğün altında birçok çalışanın olması. Ve bu kullanıcıların maalesef "BİLİNÇSİZLİĞİ" . Bazı formlarım çok dolu ve command buton vb. leri max width' e göre ayarlamam imkansız. Demo programı indiripte kullanmaya çalışan bazı müşterilerin telefon edip "Hasar analiz modülünde ÇIKIŞ DÜĞMESİ YOK" laflarından ve çözünürlüklerini telefonla 20 dakikada ayarlatmaktan bıktım. Onun yerine "Bu prg en iyi şu çözünürlükte çalışır" Uyarısını yazdığımdada "... yani şimdi hangi tuşa basmamız gerekiyo" sorusu ile karşılaşıyorum. Keşke şu kullanıcılar bilgisayar kullanmanın sadece fiyat pazarlığı olmadığını anlayabilseler.
oooo hocam sen çok şey istiyorsun. onlar olmazsa proğramcıları kim sinir edecek
Hocam bence kullanıcıyı suçlamak yerine sorunları birazda kendimizde arayalım.
Bence microsoft bu işi kolaylaştırabilirdi.
Programa öyle bir komut eklemek en mantıklısı. Yanlız dikkat, bazı kullanıcılar gözleri seçemediği için büyük çözünürlük kullanıyor. Ben 17'' ekran kullanıp 800*600 çözünürlük kullanan insanlar tanıyorum.
fox4um » Kodlama ve Komutlar » Ekran Çözünürlüğü nü VFP den değiştirmek...