【求助】關于COMBO (組合框)的按鍵選擇(焦點)問題!!!

Derekfan 2008-10-27 10:20:08
大家好:
請問對于組合框中的菜單子項中,如何才能給做到用鍵盤上下按鍵選擇,達到單擊的效果呢?
目前我使用鍵盤按鍵選擇菜單選項確無法獲取到數據,請問我要如何處理呢?
...全文
213 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-10-27
  • 打赏
  • 举报
回复
“屏蔽它”具体是什么意思?
Derekfan 2008-10-27
  • 打赏
  • 举报
回复
up
Derekfan 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 cnzdgs 的回复:]
只要ComboBox的选择改变,就会向其父窗口发送CBN_SELCHANGE通知,你只要响应这个通知来做处理就可以了。
[/Quote]
如何現在需要屏蔽它請問我要如何處理呢?
BOOL CTest6Dlg::PreTranslateMessage(MSG* pMsg)
{
if( pMsg->message == WM_MOUSEWHEEL )
{
if(m_combo1.m_hWnd == pMsg->hwnd)
{
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
我怎么添加這個代碼確無法搞定呢?
好奇怪
cnzdgs 2008-10-27
  • 打赏
  • 举报
回复
只要ComboBox的选择改变,就会向其父窗口发送CBN_SELCHANGE通知,你只要响应这个通知来做处理就可以了。
Derekfan 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 Amuro1987218 的回复:]
ON_CBN_SELCHANGE  The selection in the list box of a combo box is about to be changed as a result of the user either clicking in the list box orchanging the selection by using the arrow keys. When processing this message, the text in the edit control of the combo box can only be retrieved via GetLBText or another similar function. GetWindowText cannot be used.

应该是可以响应到,不知道你的com…
[/Quote]
請問能否屏蔽通過按鍵進行選擇嗎?
Derekfan 2008-10-27
  • 打赏
  • 举报
回复
drop list
Amuro1987218 2008-10-27
  • 打赏
  • 举报
回复
ON_CBN_SELCHANGE The selection in the list box of a combo box is about to be changed as a result of the user either clicking in the list box or changing the selection by using the arrow keys. When processing this message, the text in the edit control of the combo box can only be retrieved via GetLBText or another similar function. GetWindowText cannot be used.

应该是可以响应到,不知道你的combobox是什么风格的?下拉式还是什么
Derekfan 2008-10-27
  • 打赏
  • 举报
回复
ON_CBN_CLOSEUP
Derekfan 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lwx300 的回复:]
处理组合框的CBN_SELCHANGE消息,在其中m_wndCombo.GetCurSel();可以获取所选择的项目的索引。
void CMyDlg::OnSelchangeCombo1()
{
TRACE("combobox Index %d\r\n", m_wndCombo.GetCurSel());
}

[/Quote]
[Quote=引用 7 楼 Amuro1987218 的回复:]
响应ON_CBN_SELCHANGE
[/Quote]
這個是相應單擊事件的呀,這個我有進行處理呀,現在的問題是我無法使用鍵盤的上下按鍵進行取值呀?
Derekfan 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xunfeng_2008 的回复:]
为何不研究一下COMBO控件类的操作属性呢?
[/Quote]
我在程序中選擇了單擊事件OnSelchangeCombo,還有一個OnCloseupCombo。
不知道這樣選擇是否有錯。
Amuro1987218 2008-10-27
  • 打赏
  • 举报
回复
响应ON_CBN_SELCHANGE
lwx300 2008-10-27
  • 打赏
  • 举报
回复
处理组合框的CBN_SELCHANGE消息,在其中m_wndCombo.GetCurSel();可以获取所选择的项目的索引。
void CMyDlg::OnSelchangeCombo1()
{
TRACE("combobox Index %d\r\n", m_wndCombo.GetCurSel());
}
Derekfan 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Amuro1987218 的回复:]
无法获得数据?

GetCurSel()获得当前选择的项序号
GetLBText()获得某序号项的文本
[/Quote]
如果通過單擊事件是可以的呀,但是使用鍵盤上下按鍵進行選擇,就無法達到單擊事件的效果?
xunfeng_2008 2008-10-27
  • 打赏
  • 举报
回复
为何不研究一下COMBO控件类的操作属性呢?
Amuro1987218 2008-10-27
  • 打赏
  • 举报
回复
无法获得数据?

GetCurSel()获得当前选择的项序号
GetLBText()获得某序号项的文本
Derekfan 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Amuro1987218 的回复:]
要在菜单上移动上下建就单击了这个选项?
[/Quote]
我的意思是說,我現在 建立了一個組合框,并且我也建立了單擊事件,通過單擊選擇來獲取我需要的數據,但是我發現在組合框可以用上下鍵來選擇選項,但是我怎么就無法通過用上下鍵選擇選項來獲取數據?
Amuro1987218 2008-10-27
  • 打赏
  • 举报
回复
要在菜单上移动上下建就单击了这个选项?
Derekfan 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 Amuro1987218 的回复:]
屏蔽WM_KEYDOWN和WM_KEYUP在列表上的操作
可以取该消息产生窗口句柄检测窗口雷鸣是否为ComboLBox
[/Quote]
[Quote=引用 19 楼 cnzdgs 的回复:]
在PreTranslateMessage中判断发给ComboBox的WM_KEYDOWN、WM_KEYUP消息,如果是上、下键就返回TRUE。
[/Quote]
謝謝 我馬上去試試
Amuro1987218 2008-10-27
  • 打赏
  • 举报
回复
屏蔽WM_KEYDOWN和WM_KEYUP在列表上的操作
可以取该消息产生窗口句柄检测窗口雷鸣是否为ComboLBox
cnzdgs 2008-10-27
  • 打赏
  • 举报
回复
在PreTranslateMessage中判断发给ComboBox的WM_KEYDOWN、WM_KEYUP消息,如果是上、下键就返回TRUE。
加载更多回复(1)

15,980

社区成员

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

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