powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Контроль над TEdit
1 сообщений из 1, страница 1 из 1
Контроль над TEdit
    #38117276
крокодил123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Пытаюсь перехватить текст из TEdit по нажатию Enter, т.е. есть чат в нем TEdit куда вводится текст для отправки и по нажатию на Enter он отправляется. Хотелось бы, что бы по нажатию Enter текст не отправлялся а с ним происходили некоторые действия. Пытаюсь так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
extern "C" static LRESULT CALLBACK NewProc(HWND hwnd,UINT msg, WPARAM wParam, LPARAM lParam){
	switch(msg){
		case WM_KEYDOWN:
			if (wParam==VK_RETURN){ //Если нажат Enter, то отсылаем в TEdit текст 
				SendMessageA(hwnd,WM_SETTEXT,0,(LPARAM)"AAAAAAAA");
				return 0;
		}
	}
	return CallWindowProcA(OldProc,hwnd,msg,wParam,lParam); //Возвращаем исходную процедуру для контрола
}


extern "C" static LRESULT CALLBACK HookMsg(UINT nCode,WPARAM wParam,LPARAM lParam){  //хук на активацию окна чата

	if(nCode<0)return CallNextHookEx(mHook,nCode,wParam,lParam);
	if(nCode==HCBT_ACTIVATE){
		HWND hwnMy=(HWND)wParam;
		char s[256];
		ZeroMemory(s,sizeof(s));
		int pp=GetClassNameA(hwnMy,(LPSTR)s,255);   //получаем имя класса чата 
		if(strcmp(s,"TFrmIntranetChatMain")==0){  //Если это тот класс идем дальше
			HWND hNP=FindWindowA("TFrmIntranetChatMain","Chat"); // Это надо за тем что прога создает несколько окон с одинаковыми именами, но разными классами
			EnumChildWindows(hNP,EnumWindowsProc,NULL); //находим нужный нам TEdit и помещаем его в tEDIT
			WNDPROC OldProc=(WNDPROC)SetWindowLongPtrA(tEDIT,GWL_WNDPROC,(LONG)NewProc); //назначаем на нужный контрол нашу процедуру
		}
	}
	return CallNextHookEx(mHook, nCode, wParam, lParam);
}


Проблем 2. 1 - Нажатие на Enter срабатывает только если в текстовое поле ничего не пишем. Если же там есть текст, то сначала он отправляется в чат. 2 - Если переключиться на другое приложение, а потом обратно на чат, то чат аварийно завершается (хотя вроде процедуру назначаю старую). Помогите разобраться.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Контроль над TEdit
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]