Mfc 如何使窗口始终显示在其他窗口的顶部?
在我的对话框中,我有一个丰富的编辑控件。在richeditcontrol中键入时,我显示了一个自动完成的列表框 我想在其他窗口顶部显示列表框,但我的列表框不完全可见,但它必须位于richedit控件内 我想在combobox中实现类似listbox的功能,它总是位于其他窗口的顶部 如何在其他窗口顶部显示列表框 我正在显示以下样式Mfc 如何使窗口始终显示在其他窗口的顶部?,mfc,Mfc,在我的对话框中,我有一个丰富的编辑控件。在richeditcontrol中键入时,我显示了一个自动完成的列表框 我想在其他窗口顶部显示列表框,但我的列表框不完全可见,但它必须位于richedit控件内 我想在combobox中实现类似listbox的功能,它总是位于其他窗口的顶部 如何在其他窗口顶部显示列表框 我正在显示以下样式 DWORD nListStyle = WS_CLIPCHILDREN|WS_EX_TOPMOST|WS_CHILD |WS_VISIBLE|LBS_NOTIFY|WS_
DWORD nListStyle = WS_CLIPCHILDREN|WS_EX_TOPMOST|WS_CHILD |WS_VISIBLE|LBS_NOTIFY|WS_VSCROLL|WS_HSCROLL|WS_BORDER|
LBS_OWNERDRAWVARIABLE|LBS_HASSTRINGS| LBS_NOINTEGRALHEIGHT;
m_ctrlListBox.Create(nListStyle , listBoxRect, this,IDC_LIST);
。您不需要一个“始终位于其他窗口顶部”的窗口。您需要一个@IInspectable-我无法在m_ctrlListBox.Create函数中使用WS_POPUP,我正在获取assertion.ASSERT((dwStyle&WS_POPUP)==0);解决方案很简单:使用
WS\u弹出窗口创建CWnd
实例,创建CListBox
实例作为CWnd
的子实例。您可能还希望对CWnd
使用WS\u EX\u NOACTIVATE
,因此键盘焦点将保留在编辑控件上。@zett42-正如您所说,我创建了CWnd,其中包含WS\u POPUP和WS\u EX\u NOACTIVATE样式,并将CListBox实例作为CWnd的子对象。但在设置焦点之前,我无法键入CRichEditCtrl。在richedit控件的OnLButtonDown事件中,我正在销毁CWnd和CListBox,以便在我将焦点设置为CRichEditCTrl时它们都隐藏起来。