VC编程练习之API笔记(四)
2013-12-30 20:46
281 查看
1、 标记弹出菜单:
GetMenu():获得指向窗口的指针;
GetSubMenu(int nPos):指向CMenu对象弹出菜单的指针,nPos为弹出菜单的位置
CheckMenuItem(UINT nIDCheckItem, UINT nCheck):标记或取消弹出菜单;nIDCheckItem为被标识的菜单,nCheck表示如何标记菜单及如何表示弹出菜单位置
示例:GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION|MF_CHECKED);
新建菜单被标识了。CheckMenuItem()也可以用控件ID来标识,nCheck为MF_BYCOMMAND
如图1
2、设置菜单项字体为粗字体:
SetDefaultItem( UINT uItem, BOOL fByPos = FALSE );
uItem为新菜单的位置,fByPos为区域句柄,fByPos = FALSE设置无效
示例:GetMenu()->GetSubMenu(0)->SetDefaultItem(2,TRUE);//设置第一个子菜单页的第三个选项为粗字体
如图2
3、 为菜单项添加图形标记:
BOOL LoadBitmap( LPCTSTR lpszResourceName );// lpszResourceName为指向位图名字的字符串常量指针
BOOL LoadBitmap( UINT nIDResource );// nIDResource位图资源的ID号
BOOL SetMenuItemBitmaps(UINT nPosition, UINT nFlags, const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked );// 1)、nPosition为菜单项位置
2)、nFlags= MF_BYCOMMAND时,nPosition为菜单项的ID,nFlags= MF_BYPOSITION时,nPosition为菜单项的索引。
3)、pBmpUnchecked为菜单项以前用的位图,pBmpChecked为新加载位图
示例:
设计位图的时候,需将位图压缩为13x13,否则在菜单中无法显示位图。
如图3
4、 设置菜单项不可选,即设置菜单项为灰色不可操作:
UINT EnableMenuItem( UINT nIDEnableItem, UINT nEnable );
nIDEnableItem:表示需要操作的菜单项
nEnable:可选值为
1)、MF_BYCOMMAND 第一个参数用ID号表示
2)、MF_BYPOSITION 第一个参数用菜单所在位置表示
3)、MF_DISABLED 菜单不可用
4)、MF_ENABLED 菜单可用
5)、 MF_GRAYED 菜单变灰
示例:GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);//设置第一个菜单页的第二个菜单项为灰色,不可选
如图4:
5、 单击菜单使菜单栏消失:
添加菜单响应函数SetMenu(CMenu* pMenu),pMenu为NULL则菜单栏消失。
菜单生效/无效:
为菜单项添加CN_UPDATE_COMMAND_UI的消息响应函数,代码如下:
if(ID_FILE_NEW==pCmdUI->m_nID)
pCmdUI->Enable(FALSE);//令ID无效,Enable(TRUE)为有效
6、 鼠标右键按下弹出菜单项:
BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL );
1)、nFlags:弹出菜单的位置
2)、x:弹出菜单的水平位置
3)、y:弹出菜单的垂直位置
4)、pWnd:弹出菜单的拥有者
5)、lpRect:包含矩形坐标的RECT结构体指针
示例:
右键弹出菜单还可以这样做:选择【project】->【Add to Project】->【component and controls】->【Visual c++ component】->【Pop-up】
GetMenu():获得指向窗口的指针;
GetSubMenu(int nPos):指向CMenu对象弹出菜单的指针,nPos为弹出菜单的位置
CheckMenuItem(UINT nIDCheckItem, UINT nCheck):标记或取消弹出菜单;nIDCheckItem为被标识的菜单,nCheck表示如何标记菜单及如何表示弹出菜单位置
示例:GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION|MF_CHECKED);
新建菜单被标识了。CheckMenuItem()也可以用控件ID来标识,nCheck为MF_BYCOMMAND
如图1
2、设置菜单项字体为粗字体:
SetDefaultItem( UINT uItem, BOOL fByPos = FALSE );
uItem为新菜单的位置,fByPos为区域句柄,fByPos = FALSE设置无效
示例:GetMenu()->GetSubMenu(0)->SetDefaultItem(2,TRUE);//设置第一个子菜单页的第三个选项为粗字体
如图2
3、 为菜单项添加图形标记:
BOOL LoadBitmap( LPCTSTR lpszResourceName );// lpszResourceName为指向位图名字的字符串常量指针
BOOL LoadBitmap( UINT nIDResource );// nIDResource位图资源的ID号
BOOL SetMenuItemBitmaps(UINT nPosition, UINT nFlags, const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked );// 1)、nPosition为菜单项位置
2)、nFlags= MF_BYCOMMAND时,nPosition为菜单项的ID,nFlags= MF_BYPOSITION时,nPosition为菜单项的索引。
3)、pBmpUnchecked为菜单项以前用的位图,pBmpChecked为新加载位图
示例:
m_bitmap.LoadBitmap(IDB_BITMAP1);//载入位图 GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(0,MF_BYPOSITION,NULL,&m_bitmap);//用位图标记第一个子菜单项的第一个菜单 m_bitmap2.LoadBitmap(IDB_BITMAP2); //载入位图 GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(1,MF_BYPOSITION,NULL,&m_bitmap2);//用位图标记第一个子菜单项的第二个菜单
设计位图的时候,需将位图压缩为13x13,否则在菜单中无法显示位图。
如图3
4、 设置菜单项不可选,即设置菜单项为灰色不可操作:
UINT EnableMenuItem( UINT nIDEnableItem, UINT nEnable );
nIDEnableItem:表示需要操作的菜单项
nEnable:可选值为
1)、MF_BYCOMMAND 第一个参数用ID号表示
2)、MF_BYPOSITION 第一个参数用菜单所在位置表示
3)、MF_DISABLED 菜单不可用
4)、MF_ENABLED 菜单可用
5)、 MF_GRAYED 菜单变灰
示例:GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);//设置第一个菜单页的第二个菜单项为灰色,不可选
如图4:
5、 单击菜单使菜单栏消失:
添加菜单响应函数SetMenu(CMenu* pMenu),pMenu为NULL则菜单栏消失。
菜单生效/无效:
为菜单项添加CN_UPDATE_COMMAND_UI的消息响应函数,代码如下:
if(ID_FILE_NEW==pCmdUI->m_nID)
pCmdUI->Enable(FALSE);//令ID无效,Enable(TRUE)为有效
6、 鼠标右键按下弹出菜单项:
BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL );
1)、nFlags:弹出菜单的位置
2)、x:弹出菜单的水平位置
3)、y:弹出菜单的垂直位置
4)、pWnd:弹出菜单的拥有者
5)、lpRect:包含矩形坐标的RECT结构体指针
示例:
void CCMenu_7View::OnRButtonDown(UINT nFlags, CPoint point) //添加鼠标右键按下消息 { // TODO: Add your message handler code here and/or call default CMenu menu; menu.LoadMenu(IDR_MENU1); CMenu *pPopup=menu.GetSubMenu(0); ClientToScreen(&point); //坐标换算 pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this); CView::OnRButtonDown(nFlags, point); }
右键弹出菜单还可以这样做:选择【project】->【Add to Project】->【component and controls】->【Visual c++ component】->【Pop-up】
相关文章推荐
- VC编程练习之API笔记(一)
- VC编程练习之API笔记(五)—动态菜单的制作
- VC编程练习之API笔记(三)
- VC编程练习之API笔记(二)
- VC 编程笔记
- 深入浅出VC++串口编程之基于Win32 API
- VC网络编程笔记--进程间通信-命名管道
- Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介
- VC++ 技术内幕 笔记 第一天 Windows的编程模式
- Unix学习笔记-----Unix编程练习实例-----lstat()&& stat 结构体详解
- 深入浅出VC++串口编程之基于Win32 API
- 深入浅出VC++串口编程之基于Win32 API
- 孙鑫VC学习笔记:第二十讲 ado数据库编程
- 深入浅出VC++串口编程之基于Win32 API
- VC++串口编程之基于Win32 API
- 编程笔记之—sina&tqq api—MBApiClient 与 WeiboClient 冲突
- VC网络编程笔记--进程间通信-邮槽
- VC++ MFC编程学习笔记(2)
- 【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介
- VC学习笔记之‘HTTP编程’(一)