61菜单 需要注意的是: Fags为 ME BYPOSITION时, pOsition表示新菜单项要插入的具体位置, 为0时表示第一个菜单项,为-1时,将菜单项添加菜单的末尾处。 nFlags的标志中,可以用“|(按位或)来组合,例如 ME CHECKED| ME STRING等。有些组合是不允许的,例如 ME DISABLED ME ENABLED和 ME GRAYED, ME STRING、 ME OWNERDRAW ME SEPARATOR和位图, ME CHECKED和 ME UNCHECKED都不能组合在 起 当菜单项增加后,不管菜单依附的窗口是否改变,都应调用 CWnd: DrawMenuBar来更新菜单 表63nhg的值及其对其億参数的影响 nFlags值 含文 pOsition nIDNewl tem值 lpszNewItem值 MF BYOOMMAND菜单项以1D号来标识菜单项资 源D MF BYPOSITION菜单项以位置来标识菜单项的 位置 菜单项有弹出式子菜单 弹出式菜 VF SEPARATOR分隔线 忽略 MFOWⅠ ERDRAW自画菜单项 自画所需的数据 MF STRING 字符串标志 宇符串指针 MF CHECKED设置菜单项的选中标记 MF UNCHECKED取消菜单项的选中标记 MF DISABLED禁用菜单项 MF ENABLED允许使用菜单项 MF GRAYED 菜单项灰显
6.1菜单 需要注意的是: ◆ nFlags为MF_BYPOSITION时,nPosition表示新菜单项要插入的具体位置, 为0时表示第一个菜单项,为 -1时,将菜单项添加菜单的末尾处。 ◆ nFlags的标志中,可以用“|”(按位或)来组合,例如 MF_CHECKED|MF_STRING等。有些组合是不允许的,例如MF_DISABLED、 MF_ENABLED和MF_GRAYED,MF_STRING、MF_OWNERDRAW、 MF_SEPARATOR和位图,MF_CHECKED和MF_UNCHECKED 都不能组合在一 起。 ◆ 当菜单项增加后,不管菜单依附的窗口是否改变,都应调用 CWnd::DrawMenuBar来更新菜单
61菜单 (4)删除菜单项 调用 Deletemenu函数可将指定的菜单项删除,需要注意的是:调用该函数 后,不管菜单依附的窗口是否改变,都应调用CWnd: DrawMenuBar使菜单 更新。函数 DeleteMenu的原型如下: BOOL DeleteMenu( UINT pOsition, UINT nFlags pOsition表示要删除的菜单项位置,它由 n Flags进行说明。若当 nFlags为 ME BYCOMMAND时, n Position表示菜单项的ID号,而当 nFlags为 MF_ BYPOSITION时, n Position表示菜单项的位置(第一个菜单项位置为0) (5)获取菜单项 下面的三个 CMenu成员函数分别获得菜单的项数、菜单项的ID号以及弹出 式子菜单的句柄。 UINT GetMenuItemCount() const 该函数用来获得菜单的菜单项数,调用失败后返回-1。 UINT GetMenuItemID( int nPos )const 该函数用来获得由nPos指定菜单项位置(以0为基数)的菜单项的标识号,若 nPos是 SEPARATOR,则返回-1 CMenu* GetSubMenu( int nPos)const 该函数获得指定菜单的弹出式菜单的菜单句柄。该弹出式菜单位置由参数 nPos指定,开始的位置为0。若菜单不存在,则创建一个临时的菜单指针
6.1菜单 (4)删除菜单项 调用DeleteMenu函数可将指定的菜单项删除,需要注意的是:调用该函数 后,不管菜单依附的窗口是否改变,都应调用CWnd::DrawMenuBar使菜单 更新。函数DeleteMenu的原型如下: BOOL DeleteMenu( UINT nPosition, UINT nFlags ); nPosition表示要删除的菜单项位置,它由nFlags进行说明。若当nFlags为 MF_BYCOMMAND时,nPosition表示菜单项的ID号,而当nFlags为 MF_BYPOSITION时,nPosition表示菜单项的位置(第一个菜单项位置为0)。 (5)获取菜单项 下面的三个CMenu成员函数分别获得菜单的项数、菜单项的ID号以及弹出 式子菜单的句柄。 UINT GetMenuItemCount( ) const; 该函数用来获得菜单的菜单项数,调用失败后返回-1。 UINT GetMenuItemID( int nPos ) const; 该函数用来获得由nPos指定菜单项位置(以0为基数)的菜单项的标识号,若 nPos是SEPARATOR,则返回-1。 CMenu* GetSubMenu( int nPos ) const; 该函数获得指定菜单的弹出式菜单的菜单句柄。该弹出式菜单位置由参数 nPos指定,开始的位置为0。若菜单不存在,则创建一个临时的菜单指针