菜单的创建

//标记菜单
 
 GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION |MF_CHECKED);//这个函数设置指定的菜单项的复选标记的状态属性
 //函数里的数字是菜单栏的索引,不是下拉菜单的索引
    //GetMenu()->GetSubMenu(0)->CheckMenuItem(ID_FILE_NEW,MF_BYCOMMAND |MF_CHECKED);//使用id也可以

//默认菜单项

 GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE);/*如果此参数为FALSE,uItem是一个菜单项的标识符。
 否则,它是一个菜单项的位置,分隔符在子菜单里也占索引位置*/
//图形标记菜单
    
  CString str;
  str.Format("x=%d,y=%d",GetSystemMetrics(SM_CXMENUCHECK),GetSystemMetrics(SM_CYMENUCHECK));//尺寸,像素,默认的菜单检查标记位图
  //此函数检索的尺寸宽度和高度 Windows的显示元素和系统配置设置。
  //由GetSystemMetrics检索所有尺寸为像素
  MessageBox(str);
         m_bit.LoadBitmap(IDB_BITMAP1);
  GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(2,MF_BYPOSITION,&m_bit,&m_bit);
  /*SetMenuItemBitmaps函数与菜单项指定的位图。
  菜单项是否被选中或清除,系统会显示相应的位图旁边的菜单项。
  MF_BYCOMMAND指示uPosition给出了菜单项的标识符。
   如果没有MF_BYCOMMAND或MF_BYPOSITION指定,MF_BYCOMMAND是默认的标志。
  MF_BYPOSITION指示uPosition使从零开始的菜单项的相对位置。
 
  hBitmapUnchecked位图的句柄时显示的菜单项没有被选中。
     hBitmapChecked位图的句柄时显示菜单项被选中。*/

/*一旦在cmailframe类的构造函数中把成员变量 m_bAutoMenuEnable=FALSE后
 就不需要对ON_UPDATE_COMMAND_UI或ON_COMMAND消息进行相应处理了,CMENU类的EnableMenuItem函数
 能够正常工作,我们想要自己更改菜单的状态,那必须先把m_bAutoMenuEnable变量设置为FLASH,之后我们对
 菜单项的状态更新才能起作用*/

//禁用菜单
  GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION|MF_DISABLED|MF_GRAYED);/*EnableMenuItem启用或禁用(灰色)指定的菜单项
 nIDEnableItem指定的菜单项被启用,由nEnable决定。此参数可以指定弹出菜单项以及标准的菜单项。
 nEnable指定应采取的行动。它可以是一个MF_DISABLED,MF_ENABLED,或MF_GRAYED结合MF_BYCOMMAND或MF_BYPOSITION。
 这些值可以被组合使用按位或运算。这些值的含义如下:
  MF_BYCOMMAND指定参数给出命令ID现有的菜单项。这是默认的。
  MF_BYPOSITION指定参数给出了现有的菜单项的位置。第一项是在位置0。
  MF_DISABLED禁用的菜单项,以便它不能被选中,但不暗淡了。
  MF_ENABLED启用菜单项,以便它可以选择,并恢复其灰色状态。
     MF_GRAYED禁用的菜单项,以便它不能被选中变暗了。*/

移除和装载菜单
/*SetMenu(NULL);//移除菜单,如果里面的参数为null则全部菜单将移除
        CMenu menu;
     menu.LoadMenu(IDR_MAINFRAME);
     SetMenu(&menu);
     menu.Detach();*/
  //detach函数将菜单句柄与菜单对象分离。一般是与setmenu一起使用,否则很有可能发生异常

   /*快捷菜单手动设计,又名右击菜单*/
        CMenu menu;
 menu.LoadMenu(IDR_MENU1);
 CMenu* pPopup = menu.GetSubMenu(0);
 ClientToScreen(&point);//这个函数转换成客户的指定点坐标屏幕坐标
 pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,GetParent());//获取父窗口的指针。
 //此函数显示在指定的位置浮动菜单式和跟踪的弹出式菜单项的选择。浮动弹出式菜单中可以显示在屏幕上任意位置
 /*hMenu句柄快捷菜单显示。句柄可以通过调用CreatePopupMenu创建一个新的快捷菜单,或致电GetSubMenu来检索处理,
 与现有的菜单项关联的子获得。
 uFlags位标志指定如何TrackPopupMenu职位的快捷菜单。
 下表显示的水平位置的可能值。值描述
 TPM_CENTERALIGN中心的快捷菜单上水平相协调的x参数指定。
 在快捷菜单上,以便其左侧是与坐标的x参数指定对齐TPM_LEFTALIGN位置。
 在快捷菜单上,以便其右侧是与坐标的x参数指定对齐TPM_RIGHTALIGN位置。

 下表显示了垂直定位可能标志值。
 TPM_BOTTOMALIGN如果设置此标志,函数的快捷菜单,以便其底部是与坐标的y参数指定的一致立场。
    TPM_TOPALIGN如果设置此标志,函数的快捷菜单,以便其顶面是与坐标的y参数指定的一致立场。
 TPM_VCENTERALIGN如果设置此标志,函数中心的快捷菜单垂直相协调各参数指定的y*/

函数:
    GetMenu():此函数在框架窗口中获得指向菜单的指针。
    GetSubMenu(0):该函数取得被指定菜单激活的下拉式菜单或子菜单的句柄。
    CheckMenuItem:此函数为菜单添加一个标记。
    SetDefaultItem:此函数设置默认的菜单项。
    EnableMenuItem:次函数将某个菜单项禁用。
    setmenu:移除菜单项。
    detach:将菜单句柄与菜单对象分离
    TrackPopupMenu:此函数显示在指定的位置浮动菜单式和跟踪的弹出式菜单项的选择。
                   浮动弹出式菜单中可以显示在屏幕上任意位置.
    ClientToScreen:这个函数转换成客户的指定点坐标屏幕坐标.
 

 

SolidWorks是一款流行的三维机械设计软件,它有一个强大的二次开发功能,可以通过编程来定制菜单创建。在SolidWorks中,有几种方法可以创建自定义菜单。 首先,可以使用SolidWorks自带的宏语言VBA(Visual Basic for Applications)来创建自定义菜单。通过VBA,可以编写宏代码来实现自定义功能,并将其添加到菜单中。可以使用VBA编辑器来编写和修改宏代码,并通过代码绑定到菜单上。 除了VBA,SolidWorks还支持使用.NET语言(如C#和VB.NET)进行二次开发。使用.NET语言,可以使用SolidWorks API(应用程序编程接口)来创建自定义菜单。通过SolidWorks API,可以利用丰富的函数和方法来进行各种操作,例如创建和修改模型、执行计算和分析等。可以通过调用相应的API函数将自定义功能添加到菜单中。 另外,SolidWorks还支持使用SolidWorks PDM(Product Data Management)进行二次开发。通过PDM,可以创建自定义菜单,并与数据库进行交互,实现更高级的功能。可以使用PDM API来访问和修改PDM数据库,以及在自定义菜单中添加相关功能。 总之,通过SolidWorks的二次开发功能,可以轻松地创建自定义菜单,并实现各种定制化的功能和操作。不论是使用VBA还是.NET语言,都可以根据个人需求和编程能力选择合适的方式来进行菜单创建。这些功能的存在为用户提供了更多自由度和定制化选项,使得SolidWorks能够更好地满足用户的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值