当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++ Builder教程

CB的Form最小化时无动画的原因

    问: 我现在也搞不懂,甚至认为无法让cb的主窗口有动画的效果。 因为在任务条上的按钮所代表的窗口是application窗口,而不是 project所选定的mainform。如果强行让mainform动态地minimize, 就会最小化到桌面的左下角去了。

    答:我基本上同意你的看法。delphi & bcb 中的的主窗口都是tapplication, 一般情况下,这个窗口居于屏幕中间,大小为0x0。底部taskbar上的按钮也是tapplication窗口。应用程序的主窗口如tform1,不是tapplicaiton的子窗口,但他不具有ws_ex_appwindow的属性,所以不在taskbar上产生button。当最小化的时候,由于tapplication窗口是0x0的,所以如果有动画会很难看,所以vcl中采用systemparametersinfo这个api使得最小化时
tapplication窗口无动化。至于tform1,因为底部taskbar上的button不是
他的,所以vcl中直接hide了tform1。这样,使得整体上看起来无动化。

    可以在vcl的源码forms.pas中发现如下代码:

 procedure tapplication.minimize;

begin

if not isiconic(fhandle) then

begin

normalizetopmosts;

setactivewindow(fhandle);

showwinnoanimate(fhandle, sw_minimize);

if assigned(fonminimize) then fonminimize(self);

end;

end;

procedure tapplication.restore;

begin

if isiconic(fhandle) then

begin

setactivewindow(fhandle);

showwinnoanimate(fhandle, sw_restore);

{以下省略}

end;

 

共4页 首页 上一页 1 2 3 4 下一页 尾页 跳转到
相关内容
赞助商链接