Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Несколько ComboBox, один обработчик  (Прочитано 5819 раз)
0 Пользователей и 1 Гость смотрят эту тему.
rsa_m
Гость
« : 10-08-2009 11:46 » 

Помогите решить проблему.

Использую MFC

Сделал свой класc:
Код:
class CComboBoxMy : public CComboBox
{
public:
UINT number;
};

На форме имею 4е ComboBox от моего класса CComboBoxMy .

В OnInitDialog() пронумеровал все четыре ComboBox

В MESSAGE MAP добавил:
Код:
	ON_CBN_SELCHANGE(IDC_D1, OnCbnSelchangeD1)
ON_CBN_SELCHANGE(IDC_D2, OnCbnSelchangeD1)
ON_CBN_SELCHANGE(IDC_D3, OnCbnSelchangeD1)
ON_CBN_SELCHANGE(IDC_D4, OnCbnSelchangeD1)

И Создал функцию по событию OnChange для ComboBox
Код:
void CdpcDlg::OnCbnSelchangeD1()
{

}

Теперь какой-бы ComboBox я ни использовал-бы вызовется одна функция OnCbnSelchangeD1()

Теперь собственно сама задача.
Как сделать так чтобы в функции я получил номер используемого ComboBox ?

Я сначало написал так:
Код:
void CdpcDlg::OnCbnSelchangeD1()
{
CComboBoxMy* h_wnd;
        int j;

h_wnd =  (CComboBoxMy*) ::GetFocus();
j = h_wnd->number;
}

Но так не работает Жаль
Подскажите как получить в обработчике события number моего ComboBox который вызвал событие.
« Последнее редактирование: 10-08-2009 15:20 от Вад » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 10-08-2009 15:13 » 

способов парочка:

1) попробуй GetFocus()

2) попробуй

   MSG m;
   GetCurrentMessage(&m)
   m.hwnd;

3) Но лучше всего, убрать нафиг ON_CBN_SELCHANGE и OnCbnSelchangeD1 Улыбаюсь  И поймать сообщение в WM_COMMAND (обработчик  -

Код:
virtual BOOL OnCommand(
   WPARAM wParam,
   LPARAM lParam
);
Parameters
wParam
The low-order word of wParam identifies the command ID of the menu item, control, or accelerator. The high-order word of wParam specifies the notification message if the message is from a control. If the message is from an accelerator, the high-order word is 1. If the message is from a menu, the high-order word is 0.
lParam
Identifies the control that sends the message if the message is from a control. Otherwise, lParam is 0.

Записан

rsa_m
Гость
« Ответ #2 : 10-08-2009 15:31 » new

Спасибо.

Буду пробовать.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines