BringWindowToTop не работает в элементе управления ActiveX

Я разработал элемент управления ActiveX, который состоит из одного поля ввода и одного поля со списком.

Я пытаюсь разместить поле редактирования над списком, чтобы каждый раз, когда пользователь выбирал какой-либо элемент из списка, он располагался в окне редактирования. Таким образом, мое поле редактирования должно закрывать часть combobox’а, и для этого поля видна только кнопка со стрелкой.

Вопрос: Всякий раз, когда я пытаюсь навести курсор мыши на этот элемент управления, поле со списком появляется перед окном редактирования. Я сделал дизайн, такой как поле со списком редактирования, просто прикрывает поле со списком, но только когда фокус возвращается к списку со списком, и это занимает комбобокс передний.

Пробные подходы: в одной из моих определенных функций я попробовал все нижеприведенные функции, чтобы сделать поле редактирования над списком.

1) BringWindowToTop

2) SetForegroundWindow

3) SetWindowPos

Мой код для этой функции:

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 много мест, так что всегда editbox выше над выпадающим списком.

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

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector