BOOL CHallRoomDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
int menuID = LOWORD(wParam);
if(menuID == ID_USER_SENDMSG)
{
AfxMessageBox("ID_USER_SENDMSG!");
}
else if (menuID==ID_USER_YAOQING)
{
AfxMessageBox("ID_USER_YAOQING!");
}
else if (menuID==ID_USER_DETAIL)
{
AfxMessageBox("ID_USER_DETAIL!");
} return CDialog::OnCommand(wParam, lParam);
}鼠标点击菜单的时候,可以正常响应鼠标的信息,但是发现lParam为0我想请问下,能否在menu里面设置一下,就可以在lParam收到自己设置的数据这个功能可以实现吗,我就是想把lParam的参数利用起来
{
int menuID = LOWORD(wParam);
if(menuID == ID_USER_SENDMSG)
{
AfxMessageBox("ID_USER_SENDMSG!");
}
else if (menuID==ID_USER_YAOQING)
{
AfxMessageBox("ID_USER_YAOQING!");
}
else if (menuID==ID_USER_DETAIL)
{
AfxMessageBox("ID_USER_DETAIL!");
} return CDialog::OnCommand(wParam, lParam);
}鼠标点击菜单的时候,可以正常响应鼠标的信息,但是发现lParam为0我想请问下,能否在menu里面设置一下,就可以在lParam收到自己设置的数据这个功能可以实现吗,我就是想把lParam的参数利用起来
解决方案 »
- 关于CTypedPtrList的问题,兄弟们,快来帮忙啊!
- 随系统启动的程序,和路由器通信时出了点问题
- 急,急,急,视频传输程序出问题了,高分相送!!!!
- 哪位高人能帮小弟解释一下这句话是什么意思?int audioSend_p = (pri >> 15) & 31;
- 如何打印(打印机)绘制在CStatic上的曲线
- 在IE工具栏添加按钮遇到问题!
- 用WMI,EnableStatic设置本机的IP,mask怎么无效呢?
- 如何用windows API里建立一个256色的位图?
- 二进制标题修改
- 急!!!,关于StretchBlt的问题?
- 请问现在图形学最高效的边缘检测/提取算法是什么?
- 怎样用directdraw显示灰度图像
void CHallRoomDlg::OnNMRclickListUsers(NMHDR *pNMHDR, LRESULT *pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if(pNMListView->iItem != -1)
{
stRoomUserInfo* lpUserInfo = (stRoomUserInfo*)m_listctlUsers.GetItemData(pNMListView->iItem); DWORD dwPos = GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos) );
CMenu menu;
VERIFY(menu.LoadMenu (IDR_POPUP_LIST));
CMenu* pPopup = menu.GetSubMenu(0); if (lpUserInfo==m_pSelUserInfo)
{
pPopup->EnableMenuItem(ID_USER_SENDMSG, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
pPopup->EnableMenuItem(ID_USER_YAOQING, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
}
ASSERT(pPopup != NULL);
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,point.x,point.y,this);
//pPopup->EnableMenuItem(ID_USER_SENDMSG, MF_BYCOMMAND | MF_DISABLED) ;
}
*pResult = 0;
}
点击右键代码在此,如何修改
菜单消息和listctrl应该属于同一窗体
所以可以在菜单消息里获取当前选择项
不用全局变量
没什么啰嗦的
不知道这样行不行
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if(pNMListView->iItem != -1)
{
stRoomUserInfo* lpUserInfo = (stRoomUserInfo*)m_listctlUsers.GetItemData(pNMListView->iItem); DWORD dwPos = GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos) );
CMenu menu;
VERIFY(menu.LoadMenu (IDR_POPUP_LIST));
CMenu* pPopup = menu.GetSubMenu(0); if (lpUserInfo==m_pSelUserInfo)
{
pPopup->EnableMenuItem(ID_USER_SENDMSG, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
pPopup->EnableMenuItem(ID_USER_YAOQING, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
}
ASSERT(pPopup != NULL);
int menuID = pPopup->TrackPopupMenu(TPM_RETURNCMD|TPM_LEFTALIGN|TPM_LEFTBUTTON,point.x,point.y,this);
//pPopup->EnableMenuItem(ID_USER_SENDMSG, MF_BYCOMMAND | MF_DISABLED) ;
if(menuID == ID_USER_SENDMSG)
{
AfxMessageBox("ID_USER_SENDMSG!");
}
else if (menuID==ID_USER_YAOQING)
{
AfxMessageBox("ID_USER_YAOQING!");
}
else if (menuID==ID_USER_DETAIL)
{
AfxMessageBox("ID_USER_DETAIL!");
}
}
*pResult = 0;
}
//把OnCommand函数合并到到TrackPopupMenu下面