列表控件

zhangweiqiang 2003-02-18 11:14:25
通过键盘的上下键可以上下移动列表的所选项,如何得到这个事件,它是什么事件。
另,我想在所选项上按回车键弹出一个对话框,请问这又是什么事件,我试了试NM_RETURN 没有成功
...全文
64 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangweiqiang 2003-02-19
  • 打赏
  • 举报
回复
感谢楼上的详细解答,使我茅塞顿开
ColderRain 2003-02-18
  • 打赏
  • 举报
回复
BOOL CFairyDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message==WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_DOWN:
pMsg->wParam=0; // 使键值为0,防止其他控件再处理
m_List.SetCurSel(m_List.GetCurSel() + 1);

break;
case VK_UP:
pMsg->wParam=0;
if(m_List.GetCurSel() != 0)
m_List.SetCurSel(m_List.GetCurSel() - 1);

break;
case VK_ESCAPE:
SendMessage(WM_CLOSE);
AfxGetMainWnd()->SetFocus();

break;
case VK_RETURN:
pMsg->wParam=0;
CString str;
int nSel = m_List.GetCurSel(); // 防止选中时无数据
if(nSel >= 0)
{
m_List.GetText(nSel,str);
SendMessage(WM_CLOSE);
if(!str.IsEmpty())
AfxMessageBox(str);
}

break;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
zhangweiqiang 2003-02-18
  • 打赏
  • 举报
回复
不知大家明白我的意思了没有
我的要求是:通过键盘上下键改变列表选项,然后按回车键弹出一个对话框,上面已经说过VK_UP,VK_DOWN可以响应,VK_RETURN不能响应,可是如果你用鼠标点下不要抬起,再按回车键VK_RETURN就能响应了,不知何故,这显然不是我要求的
Gu_c_h 2003-02-18
  • 打赏
  • 举报
回复
是 VK_RETURN 不是 VK_ENTER
zhangweiqiang 2003-02-18
  • 打赏
  • 举报
回复
谢谢,但是我试了一下发现VK_UP,VK_DOWN可以响应,而VK_ENTER 不能响应不知何故

我感觉当通过键盘上下键改变列表选项时,列表控件应可以直接响应这一选项改变的事件,不必通过处理LVN_KEYDOWN事件,可我没有找到
alornwolf 2003-02-18
  • 打赏
  • 举报
回复
Example

To specify that you want the member function OnKeydownList1 to handle LVN_KEYDOWN messages from the CListCtrl whose ID is IDC_LIST1, you would use ClassWizard to add the following to your message map:

ON_NOTIFY( LVN_KEYDOWN, IDC_LIST1, OnKeydownList1 )

In the example above, the function provided by ClassWizard is:

void CMessageReflectionDlg::OnKeydownList1(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
// TODO: Add your control notification handler
// code here

*pResult = 0;
}

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧