请问一个关于全屏的问题!(50分)

加菲

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么样制作象FALSH播放器那样的全屏效果啊,,应该很简单吧,大虾帮帮忙[:D]
这种全屏是看不见系统任务栏和窗口边框的
 
form.windowstate:=wsMaximized;
form.borderstyle:=bsNone
 
show/Hide任務欄的一個函數:
procedure ShowStatusBar(Status: Integer);
var
wndHandle: THandle;
//用於存儲指定窗口的句柄
wndClass: array[0..50] of Char;
//用於存儲類名
begin
strPCopy(@wndClass[0], 'Shell_TrayWnd');
//獲取任務欄類名
wndHandle := FindWindow(@wndClass[0], nil);
//獲取任務欄窗口的句柄
case Status of
0: ShowWindow(wndHandle, SW_Hide);
//隱藏Windows任務欄
1: ShowWindow(wndHandle, SW_SHOW);
//顯示Windows任務欄
end;
end;
 
对不起啊,我说的不是最大化,隐藏任务栏也不是解决的办法呀!
 
使用SetWindowLong去掉窗口标题和边框,
然后设置窗口位置为全屏幕,此时任务栏会自动隐藏
看下列代码
const
tsFlag=SWP_DRAWFRAME or SWP_FRAMECHANGED or SWP_NOZORDER or SWP_NOMOVE or SWP_NOSIZE;
tnFlag=SWP_DRAWFRAME or SWP_FRAMECHANGED;
procedure TMain.mFullScreenClick(Sender: TObject);
begin
if mFullScreen.Checked then
begin
LockWindowUpdate(Handle);
St_top.Visible:=false;
CoolBar1.Visible:=false;
Stb.Visible:=false;
ShowMenus(false);

SavWL1:=GetWindowLong(Handle,GWL_STYLE);
SavWL2:=GetWindowLong(Panel1.Handle,GWL_EXSTYLE);
SvLeft:=Left;
SvTop:=Top;
SvWidth:=Width;
SvHeight:=Height;
SetWindowLong(Panel1.Handle,GWL_EXSTYLE,SavWL2 and not WS_EX_CLIENTEDGE);
SetWindowPos(Panel1.Handle,0,0,0,0,0,tsFlag);
SetWindowLong(Handle,GWL_STYLE,Integer(WS_POPUP or WS_VISIBLE));
SetWindowPos(Handle,HWND_TOP,0,0,Screen.Width,Screen.Height,tnFlag);
LockWindowUpdate(0);
end else
begin
LockWindowUpdate(Handle);
SetWindowLong(Panel1.Handle,GWL_EXSTYLE,SavWL2);
SetWindowPos(Panel1.Handle,0,0,0,0,0,tsFlag);
CoolBar1.Visible:=N9.Checked;
Stb.Visible:=N10.Checked;
St_top.Visible:=N9.Checked;
ShowMenus(true);

SetWindowLong(Handle,GWL_STYLE,SavWL1);
SetWindowPos(Handle,HWND_NOTOPMOST,SvLeft,SvTop,SvWidth,SvHeight,tnFlag);
LockWindowUpdate(0);
end;
end;
 
接受答案了.
 
顶部