当前位置:  开发笔记 > 编程语言 > 正文

用户从CComboBox中选择项目时捕获

如何解决《用户从CComboBox中选择项目时捕获》经验,为你挑选了1个好方法。

这是基本的.

当用户从CComboBox(实际上是子类CComboBox)中选择一个项时,我想要捕获.

试过很多组合OnCblSelChange,OnCommand.猜猜我还没有打到正确的组合(没有双关语意).

操作系统是Vista,但我正在强制进行XP风格的对话(这应该不重要,不是吗?)

我能够捕获从CEdit和派生的类的事件CFileDialog.

我在这里结束了我的智慧.任何援助都将永远受到赞赏.

当然,任何源代码都会比以往更受欢迎.



1> Smashery..:

不幸的是,似乎所有SELEND_OK用于组合框更改的消息(偶数)都是文本实际更改之前发送的,因此DoDataExchange将为您提供之前的文本CComboBox.我按照MSDN的建议使用了以下方法:

void MyDialog::DoDataExchange(CDataExchange* pDX)
{
    DDX_Text(pDX, IDC_COMBO_LOCATION, m_sLocation);
    CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(MyDialog, CDialog)
    ON_CBN_SELENDOK(IDC_COMBO1, &MyDialog::OnComboChanged)
    ON_CBN_EDITUPDATE(IDC_COMBO1, &MyDialog::OnComboEdited) // This one updates immediately
END_MESSAGE_MAP()

...

void MyDialog::OnComboChanged()
{
    m_myCombo.GetLBText(m_myCombo.GetCurSel(), m_sSomeString);
}

void MyDialog::OnComboEdited()
{
    UpdateData();
}

它看起来工作得很好.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有