MFC 弹出式菜单项 如何添加消息响应函数 如何灰化

也许你跟我一样,在弹出式菜单中添加完菜单项后,运行后花现,菜单项是灰色滴


这是因为该菜单项木有与之对应的消息处理函数,所以默认是灰色滴


添加是很简单的事儿



在头文件中添加


afx_msg void OnNetPortSet(void);


在源文件中添加



BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)



ON_COMMAND(ID_MODIFYPORT, &CMainFrame::OnNetPortSet)



END_MESSAGE_MAP()



ID_MODIFYPORT是菜单项的ID号,OnNetPortSet()菜单项的消息处理函数。你就可以在这里面添加用户选择该菜单项后所做的事情了啊


如果要让弹出式菜单的某个菜单项,灰化,使用下面这个函数吧EnableMenuItem(m_hMainMenu, i, MF_BYPOSITION |MF_GRAYED)

具体函数使用说明如下

允许或禁止指定的菜单条目

  BOOL EnableMenuItem(HMENU hMenu,UINT uIDEnableItem, UINT uEnable);
  返回值 : BOOL 判断是否成功
  参数表 :
  参数 类型及说明
  hMenu ,菜单句柄
  wIDEnableItem ,欲允许或禁止的一个菜单条目的标识符。如果在wEnable参数中设置了MF_BYCOMMAND标志,这个参数就代表欲改变菜单条目的命令ID。如设置的是MF_BYPOSITION,则这个参数代表菜单条目在菜单中的位置(第一个条目肯定是零)
  wEnable ,参考ModifyMenu函数中的菜单常数标志定义表,其中列出了允许使用的所有常数。对于这个函数,只能指定下述常数:MF_BYCOMMAND,MF_BYPOSITION,MF_ENABLED,MF_DISABLED以及MF_GRAYED
  这些值有下列含义:
  · MF_BYCOMMAND 指定参数给出已存在的菜单项的命令ID号。此为缺省值。
  · MF_BYPOSITION 指定参数给出已存在菜单项的位置。第一项所在的位置是0。
  · MF_DISABLED 使菜单项无效,以便它不能被选择,但不变灰。
  · MF_ENABLED 使菜单项有效,以便它能够被选择,并可从变灰的状态中恢复出来。
  · MF_GRAYED 使菜单项无效,以便它不能被选择并同时变灰。





你可能感兴趣的:(command,mfc)