Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 29.12.2009
Сообщений: 3

WM_KEYDOWN у дочернего окна не работает

29.12.2009, 20:41. Показов 1656. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите почему не работает событие WM_KEYDOWN у дочернего окна, а срабатывает у родителя?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.12.2009, 20:41
Ответы с готовыми решениями:

Оконная процедура дочернего окна - обработчик кнопки "Close" не работает
Здравствуйте! В своей программе создала дочернее окно, и создала оконную процедуру для него. А в нем написала обработчик кнопки...

Как получить размеры клиентской области окна-родителя в функции дочернего окна?
задание такое: имеется дочернее окно,которое "убегает" от курсора мыши в пределах родительского окна. я создала главное окно,и дочернее,...

При открытии дочернего окна, отображаются формы и кнопки с основного окна; как исправить?
при открытии дочернего окна, отображаются формы и кнопки с основного окна, как можно исправить? ...

4
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
30.12.2009, 00:37
Потому что, гладиолус Код приводить не учили?)
Все зависит от того - как ловишь. Применяешь так называемое "сабклассирование"?
0
0 / 0 / 0
Регистрация: 29.12.2009
Сообщений: 3
02.01.2010, 18:13  [ТС]
Assembler
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
                ; -===== Регистрация класса =====- ;
        mov     dword [WndClass + WNDCLASS.Style], CS_HREDRAW + CS_VREDRAW + CS_DBLCLKS
        mov     dword [WndClass + WNDCLASS.WndProc], .WndProc
        mov     dword [WndClass + WNDCLASS.ClassExtra], null
        mov     dword [WndClass + WNDCLASS.WndExtra], sizeof.EDITCODE
        push    [Inst]
        pop     dword [WndClass + WNDCLASS.Instance]
 
        push    1
        push    eax
        call    [LoadIcon]
        mov     dword [WndClass + WNDCLASS.Icon], eax
 
        push    IDC_ARROW
        push    null
        call    [LoadCursor]
        mov     dword [WndClass + WNDCLASS.Cursor], eax
 
        push     0FFFFFFh
        call    [CreateSolidBrush]
 
        mov     dword [WndClass + WNDCLASS.Background], eax
        mov     dword [WndClass + WNDCLASS.MenuName], null
        mov     dword [WndClass + WNDCLASS.ClassName], EditCodeClassName
 
        mov     eax, ebp
        sub     eax, sizeof.WNDCLASS
 
        push    eax
        call    [RegisterClass]
        ; -===== Регистрация класса =====- ;
 
        ; -===== Регистрация окна =====- ;
        push     null
        push     [Inst]
        push     null
        push     [MainWndHandle]
        push     800    ;Âûñîòà
        push     1000    ;Øèðèíà
        push     0     ;X
        push     200     ;Y
        push     WS_CHILDWINDOW + WS_CAPTION
        push     null
        push     EditCodeClassName
        push     null
        call     [CreateWindowEx]
        ; -===== Регистрация окна =====- ;
Assembler
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
        push   ebp
        mov    ebp, esp
 
        cmp     dword [ebp + 12], 0Dh
        jz      .DefWindow
 
 
        cmp     dword [ebp + 12], WM_CREATE
        jz      .WMCreate
 
        cmp     dword [ebp + 12], WM_KEYDOWN
        jz      .WMKeyDown
 
        cmp     dword [ebp + 12], WM_COMMAND
        jz      .WMCommand
 
.DefWindow:
        push   dword [ebp + 20]
        push   dword [ebp + 16]
        push   dword [ebp + 12]
        push   dword [ebp + 8]
        call   [DefWindowProc]
 
.EndWndProc:
        pop     ebp
 
        ret     16
0
2 / 2 / 1
Регистрация: 04.01.2010
Сообщений: 4
04.01.2010, 20:05
Код регистрации класса вижу, процедуру обработчика сообщений окна тоже вижу, а где же дочернее окно? Что за окно?
Предполагаю, что оно нуждается в собственном обработчике. Читайте про subclassing в MSDN(см. также SetWindowLong, CallWindowProc)

Subclassing a Window
To subclass an instance of a window, call the SetWindowLong function and specify the handle to the window to subclass the GWL_WNDPROC flag and a pointer to the subclass procedure. SetWindowLong returns a pointer to the original window procedure; use this pointer to pass messages to the original procedure. The subclass window procedure must use the CallWindowProc function to call the original window procedure.

Note To write code that is compatible with both 32-bit and 64-bit versions of Microsoft Windows, use the SetWindowLongPtr function.
The following example shows how to subclass an instance of an edit control in a dialog box. The subclass window procedure enables the edit control to receive all keyboard input, including the ENTER and TAB keys, whenever the control has the input focus.
0
0 / 0 / 0
Регистрация: 29.12.2009
Сообщений: 3
04.01.2010, 20:07  [ТС]
Это и есть дочернее окно.
Я думал вот это "push WS_CHILDWINDOW + WS_CAPTION" Устанавливает, что окно дочернее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.01.2010, 20:07
Помогаю со студенческими работами здесь

Позиционирование дочернего окна относительно элемента главного окна
Всем привет. Подскажите пожалуйста, как можно сделать. У меня есть главное окно, на котором условно говоря расположен textbox, также у меня...

Закрытие дочернего окна приводит к закрытию основного окна
Суть задания "После нажатия левой кнопки мышки в области окна в левом углу окна создать временное окно размером в чверть основного окна....

Не работает WM_KEYDOWN
Доброго времени суток! Возникла проблема: после нажатия на кнопку "New Game" программа почему-то перестает принимать сообщения с...

Не работает WM_KEYDOWN
Помогите плиз. Вот кусок кода в оконной процедуре: ... case WM_KEYDOWN: switch (wParam) { case VK_LEFT: if(MatrLine == 2)...

Не работает WM_KEYDOWN
Здравствуите , понимаю что таких тем много , читал и пробывал но все грустно . И вроде есть HANDLE_MSG(WM_KEYDOWN) как его объявить и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru