关于分辨率和窗口最大化问题(100分)

  • 主题发起人 主题发起人 Bkhswrp
  • 开始时间 开始时间
B

Bkhswrp

Unregistered / Unconfirmed
GUEST, unregistred user!
1、分辨率问题:
因为做的系统是在600*800上开发的。在较高分辨率或较低分辨率的机子上运行是窗口
的大小看着就别扭了。是不是可以在程序中加入强行设置所运行机子的分辨率为600*800,
以及更改刷新频率,个人觉得这样做不太安全,望探讨
2、窗口如何做到最大化到任务栏都看不到,程序控制能不能办到的。
 
2.
procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
end;
 
1.我一直用它,很安全.
function tdvd_mainform.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;
 
小笨苯的方法不行啊!!!
 
Bkhswrp:
>>窗口如何做到最大化到任务栏都看不到
对不起,我似乎没懂你的意思,能否再说的详细一点
 
就是程序运行的时候Windows系统的任务栏是看不到的。
如果设置TForm的bordstyle=bsnone,并且是窗口最大化的时候(wsMaximized),可以
做到;但是当bordstyle为bsSingle或其他的时候就不知道怎么做了!
 
>>如果设置TForm的bordstyle=bsnone,并且是窗口最大化的时候(wsMaximized),可以
>>做到;
我真的是很笨啊,你说可以做到,我想问你,可以做到什么啊??
我还是没明白你的意思
 
小笨笨,Bkhswrp的意思是说当他的程序运行时要将windows的任务栏隐藏起来,让他的程序
充满整个屏幕,而不是在下方还看到任务栏,就像看VCD时满屏幕一样。
 
呵呵。看看代码就一目了然了
type
TOBGUI1101_PrvdrMmbrs = class(TForm)
....
end;

.......
procedure TOBGUI1101_PrvdrMmbrs.BitBtn_fullscreenClick(Sender: TObject);//全屏按钮的响应函数
begin
if windowstate=wsnormal then
begin
windowstate:=wsMaximized;
BitBtn_fullscreen.Caption:='返回';
end
else if windowstate=wsMaximized then
begin
windowstate:=wsnormal;
BitBtn_fullscreen.Caption:='全屏';
end;

end;

当“全屏”后,Windows系统的任务栏还是可以看到的,我希望是看不到,所以我认为
还没有达到真正的“全屏”。
 
最大化我就不说了,那是污辱你的智慧,我帮你贴出HIDE任务栏的代码吧!

procedure hidetaskbar;
var
wndHandle:THandle;
wndClass: Array [0..50] of char;
begin
strpcopy(@wndClass[0],'shell_traywnd');
wndHandle:=Findwindow(@wndClass[0],nil);
showWindow(wndHandle,SW_HIDE);
end;
两个都应该完吧!
 
showwindow(findwindow('Shell_TrayWND',nil),SW_HIDE);//一运行任务栏就没了
showwindow(findwindow('Shell_TrayWND',nil),SW_Normal);//这样任务栏才回来,嘻嘻
 
唉,任务栏是没有了,但是Form怎么不能延伸到那块(任务栏)地方阿
 
你把你最大化的代码贴出吧!我帮你看看。
 
我刚才试过了,在2000下,上面的代码都不好用,别急,大家一起再找找
 
3cs,小笨苯,代码如下
procedure TForm1.Button3Click(Sender: TObject);
begin
showwindow(findwindow('Shell_TrayWND',nil),SW_HIDE);
WindowState:=WsMaximized;
end;
 
下面代码在win98、delphi3下完成,没装win2000没办法在win2000下测试:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Close_Button: TButton;
FullScreen_Button: TButton;
NormalScreen_Button: TButton;
procedure FullScreen_ButtonClick(Sender: TObject);
procedure NormalScreen_ButtonClick(Sender: TObject);
procedure Close_ButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
oldwidth,oldheight : integer;
oldleft,oldtop : integer;
isFullScreen : Boolean;

implementation

{$R *.DFM}

procedure TForm1.FullScreen_ButtonClick(Sender: TObject);
begin
if not isFullScreen then
begin
oldwidth :=form1.width;
oldheight :=form1.height;
oldleft :=form1.left;
oldtop :=form1.top;
showwindow(findwindow('Shell_TrayWND',nil),SW_HIDE);
form1.BorderStyle :=bsNone;
Form1.WindowState := wsMaximized;
isFullScreen :=True;
end;
end;

procedure TForm1.NormalScreen_ButtonClick(Sender: TObject);
begin
if isFullScreen then
begin
showwindow(findwindow('Shell_TrayWND',nil),SW_NORMAL);
form1.BorderStyle :=bsSingle;
Form1.WindowState := wsNormal;
form1.left :=oldleft;
form1.top :=oldtop;
form1.width :=oldwidth;
form1.height :=oldheight;
isFullScreen :=False;
end;
end;

procedure TForm1.Close_ButtonClick(Sender: TObject);
begin
close;
end;

end.
 
小唐, 语句showwindow(findwindow('Shell_TrayWND',nil),SW_HIDE);没有
也会达到一样的效果,这是因为你设置了
form1.BorderStyle :=bsNone;
现在我需要form1.BorderStyle为普通的值如bsSizeable也能达到这样的效果
 
procedure TForm1.Button3Click(Sender: TObject);
begin
showwindow(findwindow('Shell_TrayWND',nil),SW_HIDE);
WindowState:=WsMaximized;

Borderstyle:=bsnone;//这是最简单的方法

end;
 
我们这个软件老板要求运行的时候任务栏是看不到的,
Borderstyle:=bsnone一般也是显示画面的时候可以用,
如软件的开始和结束画面,但具体软件Form上面的Caption
信息还是要的,不然就不成样子拉。
 
后退
顶部