日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC添加鼠标右键菜单

發布時間:2023/12/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC添加鼠标右键菜单 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1)創建MFC項目;

2)在資源視圖中,右鍵點擊"XXX.rc"目錄,選擇彈出菜單的“添加資源”選項,在彈出的對話框中選擇添加menu;


3)在資源界面中輸入菜單的各個指令項的文字內容,并且設置對應的ID號;


4)在對話框的類視圖中,選擇“屬性”-“消息”,重寫對消息WM_CONTEXTMENU的響應函數。


5)函數體內填寫代碼如下:

void CtestMenuDlg::OnContextMenu(CWnd* pWnd, CPoint point) {// TODO: 在此處添加消息處理程序代碼CMenu menu;menu.LoadMenu(IDR_MENU1);CMenu * pMenu;pMenu = menu.GetSubMenu(0);pMenu->EnableMenuItem(ID_32771, MF_BYCOMMAND|MF_ENABLED);pMenu->EnableMenuItem(ID_32772, MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point.y, this);pMenu->Detach();menu.DestroyMenu(); }

6)為了讓用戶選擇的指令能夠起作用,還要在對話框的cpp文件中添加菜單指令與響應函數的關聯:

ON_COMMAND(ID_32772, &CtestMenuDlg::OnSaveBaseImg) ON_COMMAND(ID_32771, &CtestMenuDlg::OnCompareImg)

7)還要在h文件里聲明OnSaveBaseImg()和OnCompareImg()兩個函數,并在cpp文件里聲明。下面把頭文件和cpp文件列出來:

// testMenuDlg.h : 頭文件 //#pragma once// CtestMenuDlg 對話框 class CtestMenuDlg : public CDialogEx { // 構造 public:CtestMenuDlg(CWnd* pParent = NULL); // 標準構造函數// 對話框數據enum { IDD = IDD_TESTMENU_DIALOG };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 實現 protected:HICON m_hIcon;// 生成的消息映射函數virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP() public:afx_msg void OnSaveBaseImg();afx_msg void OnCompareImg();afx_msg void OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/); // afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu); }; // testMenuDlg.cpp : 實現文件 //#include "stdafx.h" #include "testMenu.h" #include "testMenuDlg.h" #include "afxdialogex.h"#ifdef _DEBUG #define new DEBUG_NEW #endif// 用于應用程序“關于”菜單項的 CAboutDlg 對話框class CAboutDlg : public CDialogEx { public:CAboutDlg();// 對話框數據enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 實現 protected:DECLARE_MESSAGE_MAP() };CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { }void CAboutDlg::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX); }BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()// CtestMenuDlg 對話框CtestMenuDlg::CtestMenuDlg(CWnd* pParent /*=NULL*/): CDialogEx(CtestMenuDlg::IDD, pParent) {m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); }void CtestMenuDlg::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX); }BEGIN_MESSAGE_MAP(CtestMenuDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_CONTEXTMENU()ON_COMMAND(ID_32772, &CtestMenuDlg::OnSaveBaseImg)ON_COMMAND(ID_32771, &CtestMenuDlg::OnCompareImg) END_MESSAGE_MAP()// CtestMenuDlg 消息處理程序BOOL CtestMenuDlg::OnInitDialog() {CDialogEx::OnInitDialog();// 將“關于...”菜單項添加到系統菜單中。// IDM_ABOUTBOX 必須在系統命令范圍內。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動// 執行此操作SetIcon(m_hIcon, TRUE); // 設置大圖標SetIcon(m_hIcon, FALSE); // 設置小圖標// TODO: 在此添加額外的初始化代碼return TRUE; // 除非將焦點設置到控件,否則返回 TRUE }void CtestMenuDlg::OnSysCommand(UINT nID, LPARAM lParam) {if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);} }// 如果向對話框添加最小化按鈕,則需要下面的代碼 // 來繪制該圖標。對于使用文檔/視圖模型的 MFC 應用程序, // 這將由框架自動完成。void CtestMenuDlg::OnPaint() {if (IsIconic()){CPaintDC dc(this); // 用于繪制的設備上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使圖標在工作區矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 繪制圖標dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();} }//當用戶拖動最小化窗口時系統調用此函數取得光標 //顯示。 HCURSOR CtestMenuDlg::OnQueryDragIcon() {return static_cast<HCURSOR>(m_hIcon); }void CtestMenuDlg::OnContextMenu(CWnd* pWnd, CPoint point) {// TODO: 在此處添加消息處理程序代碼CMenu menu;menu.LoadMenu(IDR_MENU1);CMenu * pMenu;pMenu = menu.GetSubMenu(0);pMenu->EnableMenuItem(ID_32771, MF_BYCOMMAND|MF_ENABLED);pMenu->EnableMenuItem(ID_32772, MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point.y, this);pMenu->Detach();menu.DestroyMenu(); }void CtestMenuDlg::OnSaveBaseImg() {}void CtestMenuDlg::OnCompareImg() {int a = 0;a = a + 1; }

效果:


由于EnableMenuItem()的作用,第二條指令沒有被激活。點擊“變化檢測”選項,觸發函數OnCompareImg()的斷點,說明菜單與響應函數確實建立了關聯。



總結

以上是生活随笔為你收集整理的MFC添加鼠标右键菜单的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 五月开心播播网 | а√中文在线资源库 | 日本一区二区欧美 | 亚洲青草视频 | 人妻无码中文字幕免费视频蜜桃 | 午夜视频在线观看网站 | 亚洲区一区二区三区 | 亚洲日日骚 | 欧美国产大片 | 中文字幕一区二区人妻痴汉电车 | 色哟哟在线观看视频 | 办公室大战高跟丝袜秘书经理ol | 国产性―交―乱―色―情人 | 国产三级理论 | 影音先锋国产资源 | 亚洲美女一区二区三区 | 免费91看片 | 久草视频网站 | 国产精品野外户外 | 国产乱码精品一区二区三区亚洲人 | 久久久五月天 | 久久午夜无码鲁丝片 | 男人天堂2024 | 最近中文字幕mv | 国产日韩欧美在线 | 欧美放荡办公室videos4k | 国产区在线视频 | 国产欧美不卡 | 91看片网 | 黄色成人在线免费观看 | 被绑在床强摁做开腿呻吟 | 九色首页| 欧美gv在线观看 | 草草影院ccyycom| 一区二区av电影 | 樱桃视频一区二区三区 | 又大又粗欧美黑人aaaaa片 | 乳罩脱了喂男人吃奶视频 | 欧美精品色婷婷五月综合 | 久久国产欧美日韩精品 | 国产精品三级av | 国产制服在线 | www.色啪啪.com | 色欧美视频 | 免费福利影院 | 丰满肥臀噗嗤啊x99av | 激情图片在线视频 | 日本理论片在线 | 在线播放亚洲精品 | 亚洲国产午夜 | 美女户外露出 | 777精品 | 亚欧精品视频一区二区三区 | 精品乱码一区二区三四区视频 | 玩弄丰满少妇xxxxx性多毛 | 玩偶游戏在线观看免费 | 91蝌蚪在线| 91看黄| 日韩欧美精品中文字幕 | 91九色精品 | 欧美日韩一区二区三区不卡视频 | 亚洲天堂av一区二区 | 日美av| 一本久草 | 蜜桃精品视频在线观看 | 国内久久 | 色屁屁 | 91九色视频在线观看 | 国产成人亚洲精品无码h在线 | 九九爱精品视频 | 欧美在线视频第一页 | 中文字幕日韩国产 | 久久桃色 | 高清视频在线免费观看 | 91视频这里只有精品 | 国产精品久久久久影院 | 国产三级国产精品国产国在线观看 | 中文字幕在线字幕中文 | 欧洲精品一区二区三区久久 | 国产精品第八页 | 国产调教视频在线观看 | 欧美大尺度床戏做爰 | 久久久久久精 | 99热影院| 久久精品一区二区三区不卡牛牛 | 欧美两根一起进3p做受视频 | 亚洲精品影院 | 精品国产欧美一区二区 | 免费日b视频 | 超碰一区二区三区 | 性生交大片免费看女人按摩 | 一道本久在线中文字幕 | 中文字幕在线视频日韩 | 91精产品一区观看 | 国产美女精品久久久 | 青青草逼| 久久11| 一区二区男女 | 亚洲成人一区在线 |