热门推荐
MFC菜单项添加图标 禁用菜单项 设置默认菜单项
2024-12-19 01:12

void CbuttonDlg::onLButtonDown(UINT nFlags, CPoint point) {  // TODO: 在此添加消息处理程序代码和/或调用默认值  CMenu menu;//菜单  CMenu* pPopupMenu;//菜单指针  CBitmap m_bitmap1,m_bitmap2,m_bitmap3;//位图

MFC菜单项添加图标 禁用菜单项 设置默认菜单项

 menu.LoadMenu(IDR_MENU1);//加载ID为IDR_MENU1的菜单  m_bitmap1.LoadBitmap(IDB_BITMAP1);//加载ID为IDB_BITMAP1的位图  m_bitmap2.LoadBitmap(IDB_BITMAP2);//加载ID为IDB_BITMAP2的位图  m_bitmap3.LoadBitmap(IDB_BITMAP3);

 pPopupMenu = menu.GetSubMenu(0); //获取弹出菜单的第一层子菜单的类指针

 //为菜单的第一和第三项设置图标  pPopupMenu->CheckMenuItem(0,MF_BYPOSITION|MF_CHECKED); //设置第1个为被选中状态 图标显示为选中后的图标  pPopupMenu->CheckMenuItem(1,MF_BYPOSITION|MF_CHECKED); //设置第2个为被选中状态 因为没有加载图标 前面会显示 勾  pPopupMenu->EnableMenuItem(4,MF_BYPOSITION|MF_GRAYED); //设置第四项为灰色禁用  pPopupMenu->SetDefaultItem(ID_MENU1_32772,FALSE);  //当第二个参数为FALSE时,前面一个参数需要为ID标识名称 这里是设置第二个菜单为默认菜单项 会显示粗体  pPopupMenu->SetDefaultItem(3,TRUE);      //因为菜单中有分隔符,所有这里要设置标号为3 即第4项为默认菜单项  并且一个菜单中只能有一个默认项  pPopupMenu->SetMenuItemBitmaps(0,MF_BYPOSITION,&m_bitmap1,&m_bitmap3); // 其中第三个参数是未选中时图标,第四个参数是选中的图标,由于上面设置该菜单已选中,图标显示m_bitmap2  pPopupMenu->SetMenuItemBitmaps(3,MF_BYPOSITION,&m_bitmap2,&m_bitmap3);

 ClientToScreen(&point);//将鼠标单击处的坐标转换为屏幕坐标

 //弹出菜单函数,第一个参数表示快捷菜单的下边界与由参数y指定的坐标对齐

 //第二和第三个为x、y坐标,第四个表示拥有此菜单的窗口句柄,

 //第五个默认为NULL,表示当用户在菜单以外的区域按鼠标键时,菜单会消失

 pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this,NULL);

 CDialog::onLButtonDown(nFlags, point); }

void CbuttonDlg::OnMenu132771() {  // TODO: 在此添加命令处理程序代码  MessageBox(L"点击菜单弹出的对话框"); }

CheckMenuItem函数

    函数功能:该函数取得与指定菜单项相联系的菜单标志。如果该菜单项打开了一个子菜单,该函数也返回子菜单里的菜单项数。

  函数原型:DWORD CheckMenuItem(HMENU hmenu, UINT uIDCheckItem, UINT uCheck); 

  参数:

  hmenu:含有其菜单项的标志将被提取得的菜单的句柄。

  uIDCheckItem:制定要修改的菜单项。

  uCheck:表示标记的状态。此参数可取下列值之一:

  MF_BYCOMMAND:表示参数uId给出菜单项的标识符。如果MF_BYCOMMAND和MF_BYPOSITION都没被指定,则MF_BYCOMMAND是缺省值。

  MF_BYPOSITION:表示参数uId给出菜单项相对于零的位置。

  返回值:如果指定的项不存在,返回值是OXFFFFFFFF;如果菜单项打开了一个子菜单,则返回值的低位含有与菜单相联系的菜单标志,高位含有子菜单的项数。否则,返回值是莱单标志的掩码(布尔OR)。

  下面列出与菜单项相关的菜单标志。

  MF_CHECKED:放置选取标记于菜单项旁边(只用于下拉式菜单、子菜单或快捷菜单)。

  MF_DISABLED:使菜单项无效。MF_GRAYED:使菜单项无效并交灰。MF_HILITE:加亮菜单项。

  MF_MENUBARBREAK:对下拉式菜单、子菜单和快捷菜单,新列和旧列由垂直线隔开,其余功能同MF_MENUBREAK标志。

  MF_MENUBREAK:将菜单项放于新行(对菜单条)或无分隔列地放于新列(对下拉式菜单、子菜单或快捷菜单)。

  MF_SEPARATOR:创建一个水平分隔线(只用于下拉式菜单、子菜单或快捷菜单)。

  MF_UNCHECKED: Acts as a toggle with MF_CHECKED to remove a check mark next to the item

 

SetMenuItemBitmaps 函数

该函数将一个位图与制定菜单条目相关联。无论菜单条目被选中或被清除,系统都将在菜单条目之前显示一个(大小适当的)位图。

Syntax

BOOL SetMenuItemBitmaps(      HMENU hMenu, UINT uPosition, UINT uFlags, HBITMAP hBitmapUnchecked, HBITMAP hBitmapChecked );

Parameters

hMenu [in] 菜单句柄 uPosition [in] 指定将要改变的菜单条目,由uFlags参数决定。 uFlags [in] 指定uPosition参数如何被解释。该参数必须为下列值之一:

MF_BYCOMMAND 表明uPosition参数赋给菜单条目的标识符。如果MF_BYCOMMAND和MF_BYPOSITION都未被指定,MF_BYCOMMAND就是默认的标识。 MF_BYPOSITION 表明uPosition赋给菜单条目相对位置。

hBitmapUnchecked [in] 菜单项未被选中时的位图句柄 hBitmapChecked [in] 菜单项被选中时位图的句柄

Return Value

如果函数成功,返回非零值;如果函数失败,返回零值。

Remarks

如果hBitmapUnchecked 或 hBitmapChecked 参数为NULL,系统将不会在相应的选择状态下显示任何位图。如果此二参数都为NULL,系统将在菜单项被选中时显示默认的选中位图,并在取消该菜单项的选择后移除该位图。 当菜单被摧毁后,这些位图不会被摧毁;直到应用程序来摧毁他们为止。

    以上就是本篇文章【MFC菜单项添加图标 禁用菜单项 设置默认菜单项】的全部内容了,欢迎阅览 ! 文章地址:http://keair.bhha.com.cn/quote/4647.html 
     动态      相关文章      文章      同类文章      热门文章      栏目首页      网站地图      返回首页 康宝晨移动站 http://keair.bhha.com.cn/mobile/ , 查看更多