C++ Button右键弹出式菜单

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

备注

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

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

相关链接

控件上弹出菜单

来自为知笔记(Wiz)

附件列表

C++ Button右键弹出式菜单,布布扣,bubuko.com

时间: 2024-10-12 22:22:47

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

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

原文:http://blog.csdn.net/mine3333/article/details/7291557 function test() { alert(event.x+" "+event.y); alert(event.button); } /*右键菜单不显示*/ document.oncontextmenu=function() { return false; } /*document.onmousedown=function() { if(event.button==1)

[译] 开始使用 wxPython [Getting started with wxPython]

原文:http://wiki.wxpython.org/Getting%20Started 1. 第一个应用程序:Hello World 按照“国际惯例”,我们先写一个“Hello World”的应用程序,下面是代码: 1 #!/usr/bin/env python 2 import wx 3 4 app = wx.App(False) # Create a new app, don't redirect stdout/stderr to a window. 5 frame = wx.Frame

SWT基本类说明

实例变量也被翻译成"域"和"成员变量".在面向数据库的实体类中叶被称为 "属性"或"字段"的变量.Hibernate中也称为POJO,即简单原始的Java变量.使 用变量的一般原则是:尽量使变量的有效范围最小化,即优先考虑用局部变量.其次是 实例变量,最后才是类变量. 还有一种常量的写法,比类常量前多了一个final,如下: final static int ALL_CLICKS =  0;  //something ALL_

menu JPopupMenu JTabbedPane

菜单是GUI中最常用的组件,菜单不是Component类的子类,不能放置在普通容器中,不受布局管理器的约束,只能放置在菜单栏中. 菜单组件由菜单栏 (MenuBar).菜单(Menu)和菜单项(MenuItem)三部分组成. 一个菜单栏由若干个菜单组成,一个菜单又由若干个菜单项组成.一般菜单栏放 Frame 窗口中,只要调用 Frame 类的 setMenuBar()方法即可. 常用的菜单有:下拉式菜单和弹出式菜单(独立显示,可出现在任意地方). 一:下拉式菜单的创建步骤: 1.创建一个菜单栏.

ReactNative Navigator

https://facebook.github.io/react-native/docs/navigator.html Navigator实现了页面之间的跳转. Demo描述:打开即进入"课程"页面,点击详情按钮,进入"课程详情"页面,"课程详情"页面点击头部返回按钮返回"课程"页面. Navigator简单使用 添加 Navigator 的组件<Navigator/>. 设置方法: 初始化路由(initialRo

原生获取 键盘 keycode 鼠标 键码

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>原生js数据库测试</title> <link rel="stylesheet" href=""

Pyqt 音视频播放器

在寻找如何使用Pyqt做一个播放器时首先找到的是openCV2 openCV2 貌似太强大了,各种关于图像处理的事情它都能完成,如 读取摄像头.图像识别.人脸识别.  图像灰度处理 . 播放视频等,强大的让你想不到! openCV2 播放视频也很简单: 1 #coding=utf-8 2 3 import cv2.cv as cv 4 filename = "cn.avi" 5 win_name = "video player" 6 capture = cv.Cap

Java Swing实现具有基本功能的记事本程序

Java Swing实现具有基本功能的记事本 目前实现了: 文件 新建 打开 保存 退出前保存询问 编辑 剪切 复制 粘贴 清除 撤销 格式 字体选择 字体颜色选择 帮助 关于 (样式采用了css与html来描绘) 工具栏 图标形式的: 保存 复制 粘贴 剪切 文字加粗 文字斜体 底部状态栏 文本字数实时统计 日期显示 编码显示(其实是假的哈哈) 右键弹出菜单 复制 粘贴 剪切 工具栏和右键弹出菜单共享了一些图标,特别地,右键弹出菜单使用了鼠标监听器来实时报告鼠标的坐标,从而绘制弹出菜单. 图标

Java实现Windows、Mouse监听器

1.通过实现WindowListener接口来实现Windows监听器: 1 import java.awt.event.WindowEvent; 2 import java.awt.event.WindowListener; 3 4 import javax.swing.JFrame; 5 6 public class WindowsListenerFrame extends JFrame implements WindowListener { 7 8 public WindowsListen