Delphi程序在任务栏按钮的菜单问题

字体大小: 中小 标准 ->行高大小: 标准
关于Delphi程序在任务栏按钮的菜单问题

我们知道,Delphi编写的程序,在任务栏的按钮上面的菜单,只有几项:


而一般的Windows的程序,菜单上面有更多的项目:



虽然使用的时候没有什么关系,但始终是不舒服!那么能不能把Delphi编写的程序的菜单也改成和其他程序一样呢?当然可以!

方法如下:

首先,重载主窗体的CreateParams,修改如下:

procedure TFrmModal.CreateParams(var Para: TCreateParams);

begin

inherited;

if Application.MainForm <> nil then Para.WndParent := GetActiveWindow;

end;

然后在主窗体的OnCreate中添加如下代码:

with Application do

SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);

OK,按F9运行你的程序看看?:-)。

注意,一定要对主窗体进行上面的操作哦。

BUG:

感谢stanely发现这个BUG:最小化只是最小化application这个窗体,应用程序主窗体没反应阿!

解决方法,拦截WM_SYSCOMMAND消息:

procedure TFrmMain.WMSysCommand(var msg: TMessage);

begin

if msg.WParam = SC_MINIMIZE then

Self.WindowState := wsMinimized

else

inherited;

end;

这样还有一个额外的好处,就是Windows在平铺和排列窗口的时候,不会出现空白的情况了,很正常的。

SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
 
   

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/67989.html