Button右键弹出式菜单

关键点

用类来实现

实现过程

新建1个类  类名CButtonPopMenu 基类CButton

新建1个菜单资源 IDR_MENU1

// ButtonPopMenu.h : header file
// Attributes
public:
    CRect m_Rect;  
    CMenu m_Menu;  
    int m_MenuID;
    
// ButtonPopMenu.cpp : implementation file     
void CButtonPopMenu::OnRButtonDown(UINT nFlags, CPoint point) 
{
    GetWindowRect( &m_Rect);
    point.x += m_Rect.left;
    point.y += m_Rect.top;
    
    VERIFY(m_Menu.LoadMenu(m_MenuID));    
    CMenu* pPopup = m_Menu.GetSubMenu(0); 
    ASSERT(pPopup != NULL); 
    CWnd* pWndPopupOwner = this; 
    
    while ( pWndPopupOwner->GetStyle() & WS_CHILD )
    {    
        pWndPopupOwner = pWndPopupOwner->GetParent(); 
        pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, point.x, point.y, pWndPopupOwner);
    }
    m_Menu.Detach(); 
    m_Menu.DestroyMenu(); 
    CButton::OnRButtonDown(nFlags, point);
}
    
// project02Dlg.h : header file
#include "ButtonPopMenu.h"
CButtonPopMenu    m_btn1; 
    
// project02Dlg.cpp : implementation file
BOOL CProject02Dlg::OnInitDialog()
    // TODO: Add extra initialization here
    m_btn1.m_MenuID=IDR_MENU1;
        

图-1

图-2

备注

此文可以实现任意控件的右键菜单弹出

像一些控件默认所没有的功能都可以通过定义类
然后关联类来实现

相关链接

控件上弹出菜单

 

附件列表

C++ Button右键弹出式菜单的更多相关文章

  1. Delphi Firemonkey Button ImageList

    Delphi Firemonkey Button ImageList 按钮图标 在上面 界面上,选择Button,放个ImageList控件,添加图标到ImageList. 然后关联Button和Im ...

  2. 转---JS 获取鼠标左右键

    原文:http://blog.csdn.net/mine3333/article/details/7291557 function test() { alert(event.x+" &quo ...

  3. 再见!【JAVA GUI】

    1.GUI概述 图形用户界面(Graphical User Interface,简称 GUI,又 称图形用户接口)是指采用图形方式显示的计算机操作用户界面. java作为一种面向对象的程序设计语言,它 ...

  4. 第30课 Qt中的文本编辑组件

    1. 3种常用的文本编辑组件的比较 单行文本支持 多行文本支持 自定义格式支持 富文本支持 QLineEdit (单行文本编辑组件) Yes No No No QPlainTextEdit (多行普通 ...

  5. Pyqt 音视频播放器

    在寻找如何使用Pyqt做一个播放器时首先找到的是openCV2 openCV2 貌似太强大了,各种关于图像处理的事情它都能完成,如 读取摄像头.图像识别.人脸识别.  图像灰度处理 . 播放视频等,强 ...

  6. Arcgis Engine - 鹰眼(减少闪烁)

    网上看到的代码,都是一个模样,经过不断调试,无意中效果就可以了.主要是在"鼠标拖动的时候",网上的代码的鹰眼效果,感觉坑爹死了,闪烁超级严重.主要原因是鼠标拖动的时候,进行时时更新 ...

  7. Java应用程序使用系统托盘资源

    要想使自己开发的Java SE项目运行在自己的电脑系统托盘上,这并不是什么难事,总共需要如下几步即可: 1.线判断一下,系统托盘是否可用,否则接下来的程序将不可避免的报出异常咯 2.获得一个Syste ...

  8. Java Swing实现一个简单而优美的记事本( 较详细注释 )

    Java Swing实现具有基本功能的记事本 目前实现了: 文件 新建 打开 保存 退出前保存询问 编辑 剪切 复制 粘贴 清除 撤销 格式 字体选择 字体颜色选择 帮助 关于 (样式采用了css与h ...

  9. Java实现Windows、Mouse监听器

    1.通过实现WindowListener接口来实现Windows监听器: import java.awt.event.WindowEvent; import java.awt.event.Window ...

随机推荐

  1. iOS - 操作文件目录的方法

    转:http://blog.csdn.net/marujunyy/article/details/11579183 使用目录的常用方法: //获取当前目录 - (NSString *)currentD ...

  2. Android-关于android:scrollbarStyle属性

    1. activity_maim.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android ...

  3. 【转】终于解决了Apache乱码问题

    之前开放了一个空间,给网友提供电台节目音频下载.由于多年节目的文件数量甚多,且分类没有特定格式,图省事,没有制作网页提供分类下载,而是直接利用Apache的目录浏览功能,简单直观. 不过,所在的美国服 ...

  4. Ch04-文字列表的设计

    Ch04: 文字列表的设计 4.1 编号列表 语法: <OL> <li>编号1 <li>编号2 ...... </OL> 属性: 编号类型:type=1 ...

  5. [Everyday Mathematics]20150203

    设 $f$ 在 $\bbR$ 上连续可导, 且 $\dps{f'\sex{\frac{1}{2}}=0}$. 试证: $$\bex \exists\ \xi\in \sex{0,\frac{1}{2} ...

  6. 【Android】以SimpleAdapter做适配器的ListView和GridView

    SimpleAdapter介绍 SimpleAdapter是一个简单的适配器,可以将静态数据映射到XML文件中定义好的视图. 构造函数 public SimpleAdapter (Context co ...

  7. Devexpress DateEdit选年月 z

    Mask与Display只显示年月2012-02这种格式,但用户选择起来还是不爽,体验太差. 效果如下: 代码: using Microsoft.VisualBasic; using System; ...

  8. hdu 3336 count the string(KMP+dp)

    题意: 求给定字符串,包含的其前缀的数量. 分析: 就是求所有前缀在字符串出现的次数的和,可以用KMP的性质,以j结尾的串包含的串的数量,就是next[j]结尾串包含前缀的数量再加上自身是前缀,dp[ ...

  9. acdream 1044

    题意:有你一个草坪,草的初始高度都是100,让你用割草机割,割草机只能横着或竖着割,每次割的高度一定,问你能不能割出给定的草坪出来. 考虑任意一个草被割要么是横着要么竖着,所以任意一个草必然是它所在行 ...

  10. Selenium2Library系列 keywords 之 _SelectElementKeywords 之 list_selection_should_be(self, locator, *items)

    def list_selection_should_be(self, locator, *items): """Verifies the selection of sel ...