关于PopupMenu向上弹出显示

       在使用PopupMenu过程中,应该有很多朋友在使用 PopupMenu弹出菜单时有这样一个想法,比如我要让我的PopupMenu像Window系统的“开始”向上显示。可能有很多朋友在这一方面遇到难题了。也许也有些朋友通过PopupMenu 的.Popup(x,y)来设计向个弹出,但用过这个功能时会感到不满意的。经过本的仔细摸索终于搞定了解决这个问题的方法, 以下是代码实现部分,有两种方法可以实现:

方法一:

procedure TForm1.Button2Click(Sender: TObject);
var
  pc :TPoint;
begin
    SetForegroundWindow(Handle)  ;
    pc :=Button2.ClientToScreen(Point(0, 0)) ;
    TrackPopupMenu(PopupMenu1.Handle,TPM_BOTTOMALIGN,pc.X, pc.Y,0,Handle,nil);
    PostMessage(Handle, WM_NULL, 0, 0);
end;

方法二:

procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Pp: PTPMParams;
  pc :TPoint;
begin
    SetForegroundWindow(Handle)  ;
    pc :=Button1.ClientToScreen(Point(0, 0)) ;
    GetMem(Pp, sizeof(TTPMParams));
    Pp^.cbSize := sizeof(TTPMParams);
    Pp^.rcExclude := Rect(pc.X, pc.Y,
    Screen.Width ,Screen.Height);
    TrackPopupMenuEx(PopupMenu1.Handle,TPM_BOTTOMALIGN, pc.X,
      pc.Y, Handle, Pp);
    FreeMem(Pp);
   PostMessage(Handle, WM_NULL, 0, 0);
end;

以上是两种方法的实现部分,如有什么问题或更好的办法可以联系我jzymail2008@163.com 或直接在此留言。
对此相关的msdn信息为:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/menus/menureference/menufunctions/trackpopupmenu.asp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值