能否通过编程,将宽屏变普屏?(100)

L

lwx520416

Guest
#1
我是用普通屏设计的程序,但在宽屏下显示的特别难看,能否通过编程,将宽屏变普屏(将屏幕两边变黑),即:执行程序时变普屏退出程序后,自动还原宽屏?可以实现吗?
 

风铃夜思雨

Guest
#4
程序启动时执行设置屏幕分辨率为1024X768的代码不就行了退出再恢复
 
M

modula-2

Guest
#5
驱动级,HOOK都是画饼充饥,只有用楼上的办法,如果有些宽屏是可以自动4:3的你就成功了,不能自动或无法4:3都不行。
 
A

apiao

Guest
#6
将屏幕自动调整为1024*768,说起来容易,液晶屏显示能不变形么?想问题咋就那么简单。
 
C

cpj7406

Guest
#10
1)我认为这是软件的固有问题,应该完善软件使其尽可能适应各种硬件环境。如果你开发Web系统,开发网站,那是铁板钉钉需要这么做的。2)软件尚未完善之前,可以通过非技术方法(例如和客户沟通)使客户先忍受一段时间,给你完善软件的时间。3)对于现代的各种大屏幕显示器,调整其合适的分辨率来适应软件,难以行得通,只会从一种丑陋到另一种丑陋。
 
W

wino

Guest
#12
楼上两位说得有道理,如果注重外观,从一开始设计时,就把不同分辨考虑进去
 
L

lwx520416

Guest
#13
我是这样想的,无论什么样的屏幕,我都将它设置为正常的屏幕(4:3),既分辩率为:1024X768,这样程序可以适合任意一款显示器,问题是怎样用程序来实现?能不能实现?请多多指教!!
 
K

kkyy

Guest
#14
别的没影响吧,最大化时限制一下窗口大小即可,怎么限制...自己去查查吧,很多代码
 
W

wind_2005

Guest
#15
一个主窗体,主窗体为黑色(当然你可以设置为其他色),主窗体上放一个panel,所有控件都放在这个panel内。程序打开后,主窗体最大化,panel 根据高度的一定比值来设置宽度。-------------------------另外,给你一个修改分辨率的函数:  function TfrmMain.DynamicResolution(X, Y: word): BOOL; var  lpDevMode: TDeviceMode; begin
  Result := EnumDisplaySettings(nil, 0, lpDevMode);  if Result then
  begin
   lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;   lpDevMode.dmPelsWidth := X;   lpDevMode.dmPelsHeight := Y;   Result:=ChangeDisplaySettings(lpDevMode,0)= DISP_CHANGE_SUCCESSFUL;  end;
 end;
---------------------总感觉上面的方法都不好,最好是把你的程序界面做到能动态调整才好,这样才更友好些
 
Z

zbdzjx

Guest
#16
同意楼上的说法。如果真要是4:3,宽屏的两边显示黑色,只能用panel了。我们的做法是,设置好align,那样,即使是宽屏,内容也会集中到左边,顶多右边会空一些。