Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Замена оконной процедуры / 10 сообщений из 10, страница 1 из 1
16.08.2007, 17:10
    #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
16.08.2007, 17:33
    #34733282
Aicg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена оконной процедуры
Вообще я с этим особо не работал но может лучше просто хук на окно сделать
...
Рейтинг: 0 / 0
16.08.2007, 17:37
    #34733298
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена оконной процедуры
а какого типа окно вы пытаетесь исследовать?
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
16.08.2007, 17:41
    #34733313
x-a
x-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена оконной процедуры
В каком плане , какого типа?
...
Рейтинг: 0 / 0
16.08.2007, 17:43
    #34733319
x-a
x-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена оконной процедуры
AicgВообще я с этим особо не работал но может лучше просто хук на окно сделать

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

Очень странно. Должно работать.
Ерунда какая-нибудь забыта или ошибка типа описки.
Надо внимательно все проверить и/или в дебагере прогнать.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
16.08.2007, 17:49
    #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
16.08.2007, 17:58
    #34733378
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена оконной процедуры
x-a пишет:
> Тут в чем-то другом дело.. только вот в чем?

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


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