BringWindowToTop在ActiveX控件中不起作用

BringWindowToTop is not working in the ActiveX control

本文关键字:不起作用 控件 ActiveX BringWindowToTop      更新时间:2023-10-16

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

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

Isuue:每当我试图将鼠标光标移到该控件上时,组合框就会出现在编辑框前面。我做了这样的设计,比如editbox只是掩盖了组合框,但只有当焦点回到组合框时,它才占据了组合框的前面。

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

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

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);