只是那么一点点的就好(窗口满屏显示NEW!)

IFEELGOOD 2002-04-25 02:47:14
怎么使窗口满屏显示, 常规代码如下:
Environment le_env
int li_screenheight,li_screenwidth

Getenvironment(le_env)
li_screenwidth = le_env.ScreenWidth
li_screenheight = le_env.ScreenHeight
li_screenwidth = PixelsToUnits(li_screenwidth, XPixelsToUnits!)
li_screenheight= PixelsToUnits(li_screenheight, YPixelsToUnits!)

aw_param.move(0,0)
if li_screenwidth>100 and li_screenheight>100 then
aw_param.resize(li_screenwidth, li_screenheight)
end if
但以上窗口满屏时,窗口会将WINDOWS任务条(TaskBar)摭住,而且任务栏是可以托动的,用户也可以定制,你能保证你的窗口不会摭住它们吗?
其实你在窗口要是保证在桌面的工作区内就不会有这样的问题了,怎么解决呢?只要一点点,调用一个windows API函数就可以了:
constant ulong SPI_GETWORKAREA=48

以下VC写,之后做成DLL,此函数在参数中返回WINDOWS工作区左上右下的坐标
int GetWorkArea(long &left, long &top, long &right, long &bottom)
{
int nRet;
RECT r;

nRet=::SystemParametersInfo(SPI_GETWORKAREA,0,&r,0);
left=r.left;
top=r.top;
right=r.right;
bottom=r.bottom;

return nRet;
}
有了这个函数,余下的就好办了
long ll_x,ll_y,ll_left,ll_top,ll_right,ll_bottom;

GetWorkArea(ll_left,ll_top,ll_right,ll_bottom);
ll_left = PixelsToUnits(ll_left, XPixelsToUnits!)
ll_right = PixelsToUnits(ll_right, XPixelsToUnits!)
ll_top = PixelsToUnits(ll_top, YPixelsToUnits!)
ll_bottom = PixelsToUnits(ll_bottom, YPixelsToUnits!)
aw_param.move(ll_left,ll_top)
aw_param.resize(ll_right - ll_left, ll_bottom - ll_top)
这样无论WINDOWS任务条在何处均可以适应,只是多了一点点,怎么样?
同样你也可以改造你的窗口居中函数,GetWorkArea在Win98/win2000下工作正常。

...全文
70 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
IFEELGOOD 2002-04-29
  • 打赏
  • 举报
回复
以上为窗口第一次打开时进行的自适应工作,但当窗口在已打开时,用户再去拖拉任务条, 这时发现窗口又不适应了。 查资料发现,当任务条改变时(大小或位置改变)时,将给桌面上的窗口发送WM_SETTINGCHANGE事件,由此作如下改进:
定义实例变量:
Constant uint WM_SETTINGCHANGE=26
在相关框架窗口的other事件中写脚本如下:
if Message.Number=WM_SETTINGCHANGE then
//调用窗口的屏幕匹配函数
end if

可以发现我们自已用的开发工具PB也没有做到这一点, 以上代码在win98下通过
xiaoxianhe 2002-04-26
  • 打赏
  • 举报
回复
学习中!小改进,也是好的!
水煮蛙 2002-04-26
  • 打赏
  • 举报
回复
学习
killerdanny 2002-04-26
  • 打赏
  • 举报
回复
hehe!
IFEELGOOD 2002-04-25
  • 打赏
  • 举报
回复
错,还有自动隐藏,这不会增加软件的价值,只是个小小的完善
wu_07 2002-04-25
  • 打赏
  • 举报
回复
不错,不过不变态的话,任务条一般都在下边
sorrow_arrow 2002-04-25
  • 打赏
  • 举报
回复
踩个脚印

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧