如何动态调整桌面的有效大小,就象某些广告条一样(100分)

  • 主题发起人 主题发起人 coo
  • 开始时间 开始时间
C

coo

Unregistered / Unconfirmed
GUEST, unregistred user!
就象一些广告条,如spedia、cashsurfers等,它的广告条置于屏幕的底部,此时任何窗口即使最大化也不能放大到整个桌面的大小,而是总是在这些广告条的上方,这个功能是怎么实现的?
 
做成AppBar(任务栏就是APPBAR)
 
;用API函数,好象有个功能是SetWorkArea的,名字不是这个,只是其中的一个
参数。函数名是SystemParametersInfo,帮助里有。
 
用了zensst的方法,可以实现动态调整工作区域的大小了,但桌面的大小还是不能
调整,我用的语句是:
SystemParametersInfo(SPI_GETWORKAREA,0,@DeskPos,0);
deskpos.BottomRight.y:=deskpos.BottomRight.y-200;
SystemParametersInfo(SPI_SETWORKAREA,0,@DeskPos,0);
有什么方法能够调整桌面的大小吗?
 
同意wint的看法。但具体操作可能比较复杂。
 
用appbar,这里有个例子,给你发过去了
 
;XOldDev: _devicemodeA; //保存原来的设置
XOldScreen: record //原来的Screen区域
Width, Height, Colors: Integer;
end;
XWorkArea: TRect; //程序要用的工作区
XDisplayWidth: Integer=800; XDisplayHeight: Integer=600; //桌面大小

procedure GetOldScreen; //取原来的设置
var Dev: _devicemodeA;
begin
XOldDev:=Dev;
XOldScreen.Width:=GetSystemMetrics(SM_CXSCREEN);
XOldScreen.Height:=GetSystemMetrics(SM_CYSCREEN);
XOldScreen.Colors:=0;
end;

function SET_WinWorkArea(W, H: Integer): Integer; //设置新的
begin
XOldDev.dmPelsWidth:=W;
XOldDev.dmPelsHeight:=H;
XOldDev.dmFields:=DM_PELSWIDTH+DM_PELSHEIGHT;
Result:=ChangeDisplaySettings(XOldDev, 0); //API
if (Result>=0)
then begin XDisplayWidth:=W; XDisplayHeight:=H; end;
SystemParametersInfo(SPI_GETWORKAREA, 0, @XWorkArea, 0);
end;
 
我自己已经试出来了,就用SystemParametersInfo这个函数就行了,没有想象中的
复杂
 
多人接受答案了。
 
在NT上怎么不能实现?
 
后退
顶部