0

我设计了一个由一个编辑框和一个组合框组成的activeX控件。

我试图将编辑框放在组合框上,这样每当用户从组合框中选择任何项目时,它都应该放在编辑框上。所以我的编辑框应该覆盖组合框的编辑部分,并且组合框只有箭头按钮可见。

问题:每当我试图将鼠标光标移到该控件上时,组合框就会出现在编辑框的前面。我已经进行了诸如编辑框之类的设计只是掩盖了组合框,但只有当焦点回到组合框时才会出现组合框前面。

尝试过的方法:在我定义的函数之一中,我尝试了以下所有函数来在组合框上制作编辑框。

1) 将窗口置顶

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,这样编辑框总是在组合框上方。

4

1 回答 1

0

BringWindowToTop通常用于 MDI 窗口。SetForegroundWindow用于主窗口。

您应该能够使用SetWindowPos,将其应用于两者,而不仅仅是一个:

m_combo.SetWindowPos(&CWnd::wndBottom, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
m_edit.SetWindowPos(&CWnd::wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
于 2015-07-01T08:40:38.450 回答