Win32 SDK中Context Menu使用大致流程
2007-03-05 11:09
369 查看
1、CreatePopupMenu创建菜单
2、TrackPopupMenu显示菜单,系统会自动发个WM_CONTEXTMENU消息。
3、消息循环中使用WM_CONTEXTMENU处理,其他消息。
Context Menu的应用(if in MFC)直至探出菜单
Abstract:
Windows不认为顶级菜单是Popup Menu!!!!!
Method ONE
///////////////////////////////////////////////////////
Step 1:Edit in the resource editor
Step 2:CMenu::LoadMenu
Step 3:
m_Menu.GetSubMenu(0)->AppendMenu (MF_STRING|MF_POPUP|MF_ENABLED ,11111,"123");
m_Menu.GetSubMenu(0)->AppendMenu (MF_STRING|MF_POPUP|MF_ENABLED ,11112,_T("321"));
Step 4:
void CMenuTestDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
m_Menu.GetSubMenu (0)->TrackPopupMenu (TPM_CENTERALIGN|TPM_RETURNCMD ,point.x , point.y ,this);
}
//////////////////////////////////////////////////////
Method TWO:
Step 1:
CMenu m_Menu.CreateMenu ();
CMenu m_SubMenu.CreateMenu ();
Step 2:
m_SubMenu.AppendMenu (MF_STRING|MF_POPUP|MF_ENABLED ,11111,"Sub1");
m_SubMenu.AppendMenu (MF_STRING|MF_POPUP|MF_ENABLED ,11112,"Sub2");
Step 3:
m_Menu.AppendMenu (MF_POPUP,(UINT)m_SubMenu.m_hMenu ,"mainMenu");
Step 4:
void CMenuTestDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
m_Menu.GetSubMenu (0)->TrackPopupMenu (TPM_CENTERALIGN|TPM_RETURNCMD ,point.x , point.y ,this);
}
上次无法响应Context Menu点击事件的问题
Key words:
TrackPopupMenu, TPM_RETURNCMD
TrackPopupMenu中如果设置了TPM_RETURNCMD,则该函数以返回值形式给出用户所点击Menu Item的ID,且不再另行发送WM_COMMAND消息;若不设置该参数,则发送WM_COMMAND,并以WM_COMMAND消息的参数给出点击菜单项的ID。
MSDN CMenu::TrackPopupMenu 条目未提及此参数
MSDN TrackPopupMenu条目仅给出如下,未提及TPM_RETURNCMD与WM_COMMAND互斥的关系。
VC版本:6.0 professional
MSDN版本:6.0
2、TrackPopupMenu显示菜单,系统会自动发个WM_CONTEXTMENU消息。
3、消息循环中使用WM_CONTEXTMENU处理,其他消息。
Context Menu的应用(if in MFC)直至探出菜单
Abstract:
Windows不认为顶级菜单是Popup Menu!!!!!
Method ONE
///////////////////////////////////////////////////////
Step 1:Edit in the resource editor
Step 2:CMenu::LoadMenu
Step 3:
m_Menu.GetSubMenu(0)->AppendMenu (MF_STRING|MF_POPUP|MF_ENABLED ,11111,"123");
m_Menu.GetSubMenu(0)->AppendMenu (MF_STRING|MF_POPUP|MF_ENABLED ,11112,_T("321"));
Step 4:
void CMenuTestDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
m_Menu.GetSubMenu (0)->TrackPopupMenu (TPM_CENTERALIGN|TPM_RETURNCMD ,point.x , point.y ,this);
}
//////////////////////////////////////////////////////
Method TWO:
Step 1:
CMenu m_Menu.CreateMenu ();
CMenu m_SubMenu.CreateMenu ();
Step 2:
m_SubMenu.AppendMenu (MF_STRING|MF_POPUP|MF_ENABLED ,11111,"Sub1");
m_SubMenu.AppendMenu (MF_STRING|MF_POPUP|MF_ENABLED ,11112,"Sub2");
Step 3:
m_Menu.AppendMenu (MF_POPUP,(UINT)m_SubMenu.m_hMenu ,"mainMenu");
Step 4:
void CMenuTestDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
m_Menu.GetSubMenu (0)->TrackPopupMenu (TPM_CENTERALIGN|TPM_RETURNCMD ,point.x , point.y ,this);
}
上次无法响应Context Menu点击事件的问题
Key words:
TrackPopupMenu, TPM_RETURNCMD
TrackPopupMenu中如果设置了TPM_RETURNCMD,则该函数以返回值形式给出用户所点击Menu Item的ID,且不再另行发送WM_COMMAND消息;若不设置该参数,则发送WM_COMMAND,并以WM_COMMAND消息的参数给出点击菜单项的ID。
MSDN CMenu::TrackPopupMenu 条目未提及此参数
MSDN TrackPopupMenu条目仅给出如下,未提及TPM_RETURNCMD与WM_COMMAND互斥的关系。
VC版本:6.0 professional
MSDN版本:6.0
相关文章推荐
- 聚合支付ping++流程和SDK使用,你没看错,是一样的
- 使用纯C语言开始win32 sdk编程
- ContextMenuFragment使用分析menu dialog
- cocos2d-x win32导成anroid工程大致流程,附小问题集锦
- 微信js-sdk使用流程
- win32 sdk中ListView列表控件的使用
- ContextMenuStrip 菜单的使用技巧
- 在Win32 SDK中使用Lu模块化编译运行库MLu
- pietty使用经验总结 大致上的流程-两个主机之间复制档案
- Linux下面编译生成win32能够使用的sdk
- 如何在Smartphone的Win32程序中使用Windows的通用菜单资源(MENU而不是SHMENUBAR)
- ArcEngine二次开发,TOCControl控件上使用contextMenuStrip
- 一个使用Win32SDK编写Windows GUI程序的教程: "theForger's Win32 API Tutorial"
- win32 SDK开发中打开 保存文件对话框的使用
- ContextMenuFragment的使用
- C#winform中ListView及ContextMenuStrip的使用
- C# winform中使用contextMenuStrip作为右键菜单时,菜单项失效的问题
- Windows Mobile应用开发(1):使用Win32 SDK 开发屏幕手电程序
- Win32 SDK 应用程序中使用XP控件外观(VS 2008)
- 之前账号的文章2:Context-menu.Android库的使用(修改显示位置)