zoukankan      html  css  js  c++  java
  • 在任务栏图标上显示自定义的右键菜单

    关键字:C# 任务栏 右键菜单 NotifyIcon ContextMenu OwnerDraw

        .Net Framework提供的NotifyIcon组件真是方便,用它可以很容易的实现任务栏图标功能,再结合ContextMenu组件就可以在任务栏图标上显示右键菜单,但是当ContextMenu组件的菜单项的OwnerDraw属性设置为true时,却不能正确显示自定义的菜单,微软已确认这是个BUG(http://support.microsoft.com/?id=827043)。

    这是我自定义的右键菜单



    设置NotifyIcon组件的ContextMenu属性



    自定义菜单的效果不能正确显示



    有解决方法吗?当然!经过一些摸索,可以用Windows API来实现。
    方法是将NotifyIcon组件的ContextMenu属性设置为无,然后在NotifyIcon组件的MouseDown事件里加入下面代码:

    if (e.Button == MouseButtons.Right)
       {
        //取得当前鼠标位置
        Win32.POINT point = new TestPopMenu.Win32.POINT();
        Win32.GetCursorPos(ref point);

        Win32.SetForegroundWindow(this.Handle);
        //显示菜单
        Win32.TrackPopupMenuEx(this.contextMenu1.Handle,0x40,point.x,point.y,this.Handle, new TestPopMenu.Win32.TPMPARAMS());
       }



    效果图

     

    演示代码下载
       

  • 相关阅读:
    CTF简介
    最先与最后
    记一次某校版facemash的搭建
    ipv6入门
    win10开启IPv6的两种方法
    安装 Go 1.11 在 Ubuntu 18.04 & 16.04 LTS
    python开发者的AsyncIO
    Python 异步--Await the Future
    Python元类
    alias 和 unalias 命令
  • 原文地址:https://www.cnblogs.com/ZDJ/p/101276.html
Copyright © 2011-2022 走看看