Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 20.12.2011, 21:01   #1
Trust_357
Пользователь
 
Регистрация: 10.03.2011
Сообщений: 68
По умолчанию Обработка ввода в EDIT по notification

Мужики в устал искать и знаю, что искать буду долго подскажите пожалуйста к какому типу нужно приводить NMHDR, что бы выгребти букву, которая вводится в EDIT, то есть что бы править ввод до вывода буквы на экран по аналогии
Код:
BOOL OnNotify(HWND hDlg,INT id,NMHDR *p)
{
	switch(id)
	{
	case IDC_SPIN1:
		switch(p->code)
		{
		case UDN_DELTAPOS:
			NMUPDOWN *p1=(NMUPDOWN*)p;     //<= ВОТ САМО ПРИВЕДЕНИЕ
			p1->iDelta=-p1->iDelta;
			return TRUE;
		}
	}
        return FALSE;
NMUPDOWN тип структуры в которой содержится информация про SPIN, искал для SLIDER структура NMTRBTHUMBPOSCHANGING <- эту заразу искал выходные, для EDIT задолбался, подскажите, кто знает

Последний раз редактировалось Trust_357; 20.12.2011 в 21:08.
Trust_357 вне форума Ответить с цитированием
Старый 20.12.2011, 22:50   #2
Trust_357
Пользователь
 
Регистрация: 10.03.2011
Сообщений: 68
По умолчанию

Вот что Я написал, но в кейс не заходит скажите в чём проблема?
Код:
BOOL OnNotify_2(HWND hDlg,INT id,NMHDR *p)
{
	switch(p->idFrom)
	{
	case IDC_EDIT1:
		{
			if(p->code==EN_UPDATE)
			{
				NMCBEENDEDIT *p1=(NMCBEENDEDIT*)p;
				std::wstringstream wss;
				int a=_ttoi(p1->szText);
				if(a>24||a<0)
				{
					p1->szText[_tcslen(p1->szText)-1]=_T('\0');
					return TRUE;
				}
			}
		break;
		}
	case IDC_EDIT2:
	{
		if(p->code==EN_UPDATE)
		{
			NMCBEENDEDIT *p1=(NMCBEENDEDIT*)p;
			std::wstringstream wss;
			int a=_ttoi(p1->szText);
			if(a>24||a<0)
			{
				p1->szText[_tcslen(p1->szText)-1]=_T('\0');
				return TRUE;
			}
		}
	break;
	}
	case IDC_EDIT3:
		{
			if(p->code==EN_UPDATE)
			{
				NMCBEENDEDIT *p1=(NMCBEENDEDIT*)p;
				std::wstringstream wss;
				int a=_ttoi(p1->szText);
				if(a>60||a<0)
				{
					p1->szText[_tcslen(p1->szText)-1]=_T('\0');
					return TRUE;
				}
			}
		break;
		}
	}
	return FALSE;
}
Trust_357 вне форума Ответить с цитированием
Старый 21.12.2011, 01:51   #3
Trust_357
Пользователь
 
Регистрация: 10.03.2011
Сообщений: 68
По умолчанию

Мужики если не там отписал, хоть скажите, на мой предыдущий пост WINAPI C++ никто не ответил неделя прошла, если не там отписал, скажите
Trust_357 вне форума Ответить с цитированием
Старый 21.12.2011, 12:15   #4
Exception
Пользователь
 
Регистрация: 31.12.2007
Сообщений: 37
По умолчанию

Мне кажется что EDIT не посылает вобще никаких WM_NOTIFY сообщений и в MSDN насколько я помню нет таких сведений.
Exception вне форума Ответить с цитированием
Старый 21.12.2011, 14:33   #5
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Сообщение от Exception Посмотреть сообщение
Мне кажется что EDIT не посылает вобще никаких WM_NOTIFY сообщений и в MSDN насколько я помню нет таких сведений.
загляни в МСДН

Trust_357, смотри ON_EN_CHANGE
counter вне форума Ответить с цитированием
Старый 21.12.2011, 15:40   #6
Trust_357
Пользователь
 
Регистрация: 10.03.2011
Сообщений: 68
По умолчанию

Спасибо Друзяки, жму весы, пошёл копать!!!)
Как раз такое Я от учителя и слышал! Counter спасибо!!!

Последний раз редактировалось Trust_357; 21.12.2011 в 15:43.
Trust_357 вне форума Ответить с цитированием
Старый 22.12.2011, 08:49   #7
Exception
Пользователь
 
Регистрация: 31.12.2007
Сообщений: 37
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
загляни в МСДН

Trust_357, смотри ON_EN_CHANGE
Ты где там нашел ON_EN_CHANGE? Вот EN_CHANGE я знаю. И вобще это через WM_COMMAND посылается, а не WM_NOTIFY, так что это различные вещи. =)
Exception вне форума Ответить с цитированием
Старый 22.12.2011, 10:13   #8
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Exception, это нотификационные сообщения? Нотификационные! Какие проблемы? А вот ON_EN_CHANGE это MFC-шная штуковина.
counter вне форума Ответить с цитированием
Старый 22.12.2011, 16:01   #9
Exception
Пользователь
 
Регистрация: 31.12.2007
Сообщений: 37
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
Exception, это нотификационные сообщения? Нотификационные! Какие проблемы? А вот ON_EN_CHANGE это MFC-шная штуковина.
Начнем с того, что автор изначально писал код для сообщений WM_NOTIFY. Он хотел обработать уведомление NMCBEENDEDIT, но его посылает сам ComboBox, а не EDIT. Вот я про это и написал, что EDIT как устаревший контрол не посылает WM_NOTIFY. Ты же скинул ссылку на WM_COMMAND уведомление. Так что это я должен у тебя просить "какие проблемы?".
Exception вне форума Ответить с цитированием
Старый 22.12.2011, 16:53   #10
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Бред написал какой-то... Нотификационные сообщения - это сообщения, которые посылает контрол родительскому окну, а не то что контрол должен послать WM_NOTIFY.

Последний раз редактировалось counter; 22.12.2011 в 16:57.
counter вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация ввода с Edit Lyubimov C++ Builder 1 20.04.2011 17:38
Проверка на правильность ввода в Edit Claster Помощь студентам 1 05.04.2011 12:27
Ограничение ввода в Edit xxxsas Общие вопросы C/C++ 4 22.01.2009 12:36
Ограничение ввода в Edit Макс84 Компоненты Delphi 7 23.07.2007 08:38


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840