【发布时间】:2015-09-18 06:30:20
【问题描述】:
我设计了一个由一个编辑框和一个组合框组成的activeX控件。
我试图将编辑框放在组合框上,这样每当用户从组合框中选择任何项目时,它都应该放在编辑框上。所以我的编辑框应该覆盖组合框的编辑部分,并且组合框只有箭头按钮可见。
问题:每当我试图将鼠标光标移到该控件上时,组合框就会出现在编辑框的前面。我已经进行了诸如编辑框之类的设计只是掩盖了组合框,但只有当焦点回到组合框并且正在将组合框放在前面。
尝试过的方法:在我定义的函数之一中,我尝试了以下所有函数来在组合框上创建编辑框。
1)BringWindowToTop
2)设置前景窗口
3)设置窗口位置
我对该函数的代码:
void DetermineWindowsShown()
{
m_edit.EnableWindow(m_bEnabled);
m_combo.EnableWindow(m_bEnabled);
//here only I tried all the diff function
m_edit.BringWindowToTop();
//m_edit.SetForegroundWindow();
//m_combo.SetWindowPos(&CWnd::wndBottom ,0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}.
我在很多地方都调用了DetermineWindowsShown,这样编辑框总是在组合框上方。
【问题讨论】:
-
你为什么要重新发明一个 simple 或 drop-down 风格的Combo Box 控件?您真正想要达到什么目的?
-
其实我想在展示给用户之前对item做一些操作。我们无法将组合框的编辑框设置为与其项目列表不同的值,因此我使用单独的编辑框。例如,combobx 有项目:abc,def,xyz。当我选择 abc 时,它应该显示 abc123(123 一个我想要连接的字符串) 并带有下划线。
-
如果你让它拥有绘制控制会更容易。
标签: c++ visual-c++ combobox mfc editbox