powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Замена оконной процедуры
10 сообщений из 10, страница 1 из 1
Замена оконной процедуры
    #34733199
x-a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x-a
Гость
Приветствую!
Заменяю оконную процедуру в dll, пытаюсь отловить сообщения типа WM_SETFOCUS, WM_ACTIVATE - не ловится! А сообщения WM_PARENTNOTIFY, WM_SIZE - ловятся! Почему так происходит?
Делаю так.
Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
#define OLD_PROC_KEY "oldwindowproc"
...

 if (GetProp( hWnd, OLD_PROC_KEY )== 0 )
    {
        hFuncPtr = SetWindowLong( hWnd, GWL_WNDPROC, (DWORD)NewWndProc );
        sprintf(s,"hFuncPtr %x hWnd %x",hFuncPtr,hWnd);
	    logs(s);
        SetProp( hWnd, OLD_PROC_KEY, (HANDLE)hFuncPtr );
        
    }

......
static LRESULT APIENTRY NewWndProc(
	HWND hWnd,
	UINT uMsg,
	WPARAM wParam,
	LPARAM lParam)
{  	     
     
     
    switch(uMsg)
    {
    	case WM_ACTIVATE: {
    	logs("!!!!!!!!WM_ACTIVATE"); //Здесь не ловится.
    	break;
    	}
    	 
		case WM_PARENTNOTIFY: { //Ловится
			
			
			if (wParam == WM_CREATE) {
				RECT rect;
				HWND hChild = (HWND) lParam;
	   		   	childId = hChild;
	   		   	SetLastError ( 0 );
	   		   	logs("wParam == WM_CREATE");
	   		break;
		}
		
		
		case WM_SIZE: {  // тоже ловится
			logs("WM_SIZE!!!!");
			WORD newHeight = HIWORD(lParam);
			WORD newWidth = LOWORD(lParam);
			HWND hChild = GetWindow(hWnd, GW_CHILD);

			if (hChild != NULL) {
				SetWindowPos(hChild, NULL,  0 ,  0 , newWidth, newHeight, SWP_NOZORDER);
			}
			break;
		}
		
    }

	return CallWindowProc(GetProp(hWnd, OLD_PROC_KEY),
						  hWnd, uMsg, wParam, lParam);
}






При чем в ф-цию приходит всегда куча сообщений, но в кейсы они не заходят.. :((
...
Рейтинг: 0 / 0
Замена оконной процедуры
    #34733282
Aicg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще я с этим особо не работал но может лучше просто хук на окно сделать
...
Рейтинг: 0 / 0
Замена оконной процедуры
    #34733298
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а какого типа окно вы пытаетесь исследовать?
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
Замена оконной процедуры
    #34733313
x-a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x-a
Гость
В каком плане , какого типа?
...
Рейтинг: 0 / 0
Замена оконной процедуры
    #34733319
x-a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x-a
Гость
AicgВообще я с этим особо не работал но может лучше просто хук на окно сделать

Да, если поставить хук, то проблем бы не было. Но надо попробовать без хука. Т.к. наличие хуха осложнит задачу в целом.
...
Рейтинг: 0 / 0
Замена оконной процедуры
    #34733336
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> При чем в ф-цию приходит всегда куча сообщений, но в кейсы они не
> заходят.. :((

Очень странно. Должно работать.
Ерунда какая-нибудь забыта или ошибка типа описки.
Надо внимательно все проверить и/или в дебагере прогнать.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Замена оконной процедуры
    #34733342
x-a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x-a
Гость
MasterZiv
> При чем в ф-цию приходит всегда куча сообщений, но в кейсы они не
> заходят.. :((

Очень странно. Должно работать.
Ерунда какая-нибудь забыта или ошибка типа описки.
Надо внимательно все проверить и/или в дебагере прогнать.
Posted via ActualForum NNTP Server 1.4

А что может быть забыто, если я добавляю только строку
Код: plaintext
1.
2.
3.
case WM_ACTIVATE: {
    	logs("!!!!!!!!WM_ACTIVATE"); //Здесь не ловится.
    	break;
    	}
?
Тут в чем-то другом дело.. только вот в чем?
...
Рейтинг: 0 / 0
Замена оконной процедуры
    #34733378
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x-a пишет:
> Тут в чем-то другом дело.. только вот в чем?

Проверь после установки оконной процедуры Assert-ом, что она установилась.
Прочитай ее обратно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Замена оконной процедуры
    #34733379
Aicg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может окно по какой-то причине вообще этого сообщения непринимает
Попробуй перехватить как нибудь еще и если получиться думай на этим
...
Рейтинг: 0 / 0
Замена оконной процедуры
    #34733384
x-a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x-a
Гость
А дебагера нет, т.к. пишу просто в текстовом редакторе и компилю с помощью MinGW. Эта длл нужна для Java-приложения как native-библиотека (JNI). Пыталась загнать ее в VS C++, не получилось чего-то.. компилятор на все подряд ругается.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Замена оконной процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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