Re[3]: CComboBox - обработка событий
От: kolam http://www.linkedin.com/in/kolam
Дата: 24.09.04 14:08
Оценка:
Здравствуйте, Victoria, Вы писали:

V>Здравствуйте, kolam, Вы писали:


K>>Здравствуйте, Victoria, Вы писали:


V>>>Как мне последовательно вызвать OnKillfocus(), а потом OnKillfocusCbstreet() (или наоборот)


K>>Не совсем понял в чем дело... Наверное, надо использовать PostMessage для соотвествующих контролов.

V>при вызове комбобокса вызывается OnKillfocus()
V> , там я пишу GetOwner()->SendMessage(WM_COMMAND, MAKELONG(GetWindowLong(m_hWnd,
V> GWL_ID), CBN_KILLFOCUS),(LPARAM)m_hWnd);
V>но эта строка вызывает себя же и программма зацикливается. А мне надо попасть в OnKillfocusCbstreet()
Ну если уж идти таким путем, то тогда уж:
((CDialog*)GetOwner())->GetDlgItem(IDC_XXX)->SendMessage(WM_COMMAND, MAKELONG(GetWindowLong(m_hWnd, GWL_ID), CBN_KILLFOCUS),(LPARAM)m_hWnd);

Но такой подход не совсем правильный, так как контролы должны "знать" друг о друге. Лучше перехватывать сообщение о потере фокуса уровнем выше (например в диалоге), скажем, с помощью PreTranslateMessage и передавать управление последовательно всем заинтересованным контролам.
kolam
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.