MFC 菜单操作

1.菜单是窗口框架的组成部分,如果我们要导入自定义的菜单,可以通过以下语句实现

在CMainFrame::OnCreate的函数中添加如下代码段

SetMenu(NULL);//将原本的菜单项去除
CMenu menu;//新定义一个菜单对象
menu.LoadMenu(IDR_MAINFRAME);//将ID为IDR_MAINFRAME菜单资源载入到menu对象中
SetMenu(&menu);//将menu对象设为框架类对象的菜单
menu.Detach();//断开菜单资源与菜单对象的关联

2.生成复选标记菜单项,这段代码是在框架类中实现的

GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION | MF_CHECKED);

3.设置缺省菜单项,即菜单成黑体加粗

GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE);/

4.图像标记菜单项

GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(0,MF_BYPOSITION,&m_bitmap,&m_bitmap);

5.将菜单设置不能使用

GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED);

6.右键弹出菜单

在OnRButtonDown函数中,添加如下代码:

CMenu menu;
    menu.LoadMenu(IDR_MENU1);
    CMenu *pPopup=menu.GetSubMenu(0);
    ClientToScreen(&point);//
    pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,this);

7.添加菜单项,可用AppendMenu()在菜单的最后加子菜单,InsertMenu()在指定的位置加子菜单

menu1.AppendMenu(MF_STRING,ID_TEST1,"Test1");
menu1.AppendMenu(MF_STRING,ID_TEST2,"Test2");
menu1.InsertMenu(1,MF_BYPOSITION|MF_STRING, (UINT)ID_TEST1,"ID_TEST1");

8.删除菜单

用DeleteMenu()、RemoveMenu()函数来删除指定位置的菜单/菜单项

9.添加右键菜单

menu1.TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);

时间: 2024-07-28 14:17:39

MFC 菜单操作的相关文章

MFC菜单、工具栏和状态栏

菜单:CMenu类 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 CMenu类的主要成员函数        BOOL LoadMenu(UINT nIDResource);        加载菜单资源,并将其附加到CMenu对象上.参数nIDResource指定了要

MFC文件操作、序列化机制

一 MFC的文件操作 1 相关类 CFile类-封装了文件句柄以及操作文件的API函数. CFileFind类-封装了文件搜索功能. 2CFile类的使用 2.1 文件读写 2.1.1 创建或者打开文件 CFile::Create 2.1.2 文件读写 CFile::Read/Write 2.1.3 关闭文件 CFile::Close 注意:1 文件读写需要异常处理 2 注意文件的指针位置 2.2 文件属性的获取和设置 2.2.1 CFile::GetStatus 2.2.2 CFile::Se

TAB菜单操作

1,TAB菜单操作 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .hide{ display:none; } .menu{ height:38px; background-color:#eeeeee; line-height:38px; } .a

MFC图片操作

根据MFC要操作图片的来源,可分为以下两类: 一.非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) 二.动态载入图片(即只需要在程序中指定图片的路径即可载入) 一.非动态显示图片 1.传送位图函数 CDC memDC; memDC.CreateCompatibleDC(pDC); CBitmap NewBitmap, * pOldBitmap; NewBitmap.LoadBitmap(IDB_BITMAP1);//从资源中导入位图 BITMAP bmpInfo;//声明BITMAP

selenium基础(下拉菜单操作)

selenium基础(下拉菜单操作) 非select/option元素: 1.触发下拉列表出现 2.等待下拉列表中的元素出现,然后进行选择元素即可. select/option元素: 下拉框操作-Select类selenium提供Select类来处理select/option 1.引入 from selenium.webdriver.support.ui import Select 2.创建Select对象,传入元素 ele = driver.find_element_by_xpath(元素定位

MFC文件操作

文件操作:二进制文件和文本文件的区别.二进制文件将数据在内存中存在的模式原封不动的搬到文件中,而文本文件是将数据的asc码搬到文件中.首先做一个读写文件的菜单,在CxxView里响应1.C的方式:fwrite:size:Item size in bytes 每次写多少个字节count:Maximum number of items to be written ,总共写几次. FILE *p;p=fopen("c://1.txt","w");fwrite("

【mfc】利用到MFC菜单、字体对话框、OnSize函数实现简易记事本

经过了之前大量mfc已经明白了许多功能,但是之前的项目一直没有使用到mfc的菜单功能,菜单是Win32功能很常见的东西,这个也必须要懂.其实菜单的建立也很简单,配合之前的文件操作功能,已经能够把开始->附件->记事本,就是那个notepad.exe写出来了. 一.基本目标 首先,这个记事本能够最大化,最小化,里面的编辑框也能够跟住最大化最小化,就是记事本里面组件不会失真,这个也不是理所当然的时候,要对OnSize进行写作,否则里面的组件是不会跟着最大化的,这大概就是mfc比vb艰难的原因吧!

MFC 菜单编程 -- 总结

菜单结构 一个菜单栏可以有若干个子菜单,而一个子菜单又可有若干个菜单项.对于菜单栏的子菜单,由左至右从0开始索引.对于特定的子菜单的菜单项,由上至下建立从0开始的索引.访问子菜单和菜单项,均可通过其索引或标识进行. 对于在窗口客户区右键弹出的菜单,如果弹出菜单归属View 类窗口,则菜单项只能响应View 和Doc 类消息点击. 如果弹出菜单归属框架窗口,弹出菜单上的消息的路由遵循View -DOC-MainFrame-APP的响应顺序 . 菜单的相关重要函数 CMenu*    GetMenu

windows编程之菜单操作

分清几个概念 <1>"主菜单" 和 "顶层菜单" 是一个意思. <2>主菜单中的项目叫做 "弹出菜单" 或者 "子菜单". <3>弹出菜单的项目能够是另外一个弹出菜单. <4>菜单的状态:启用,禁用.无效化,无效化跟前两者的差别是灰色显示文字. (1)菜单消息 <1>WM_INITMENU wParam, // handle to menu (HMENU) lPara