|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.02.2008, 18:45 | #1 |
Форумчанин
Регистрация: 12.06.2007
Сообщений: 130
|
Как обрабатывать нажатие на кнопке?
Как можно обработать щелчок (да и другие события) на кнопке?
Кнопка создается на WinAPI |
05.02.2008, 18:46 | #2 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Если "Кнопка создается на WinAPI", значит у нее есть оконная процедура, в которой нужно обработать нужные события. В чем вопрос-то?
|
05.02.2008, 18:50 | #3 |
Форумчанин
Регистрация: 12.06.2007
Сообщений: 130
|
Код:
Пытался в оконной процедуре формы (pWnd), но при нажатии на кнопку ничего не происходит. |
05.02.2008, 19:12 | #4 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Надо объявить функцию по прототипу
LRESULT BtnWndProc(HWND hWnd, UINT Msg, WPARAM wParam,LPARAM lParam); (в паскале это будет что-то вроде function BtnWndProc(hWnd : HWND; Msg, wParam, lParam : dword) : dword; ) Через GetWindowLong(hWnd, GWL_WNDPROC) взять у кнопки адрес старой оконной процедуры, запомнить его, через SetWindowLong(hWnd, GWL_WNDPROC, <Адрес новой процедуры>); установить новый адрес (не забывая в функции BtnWndProc после необходимых действий возвращать управление старой процедуре (адрес которой мы запомнили). Само собой это всё БЕЗ классов. Под hWnd понимается хэндл самой кнопки. Справитесь? |
05.02.2008, 19:18 | #5 |
Форумчанин
Регистрация: 12.06.2007
Сообщений: 130
|
Я сделал по-другому, кажется работает:
Код:
|
05.02.2008, 19:24 | #6 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
1. В каком месте стоит этот цикл?
2. Что подразумевается под "недоступной"? Если disabled, то EnableWindow(hWnd, 0); |
05.02.2008, 19:27 | #7 |
Форумчанин
Регистрация: 12.06.2007
Сообщений: 130
|
Цикл стоит после создания всех компонентов. После цикла ничего нет.
Спасибо. P.S. А где можно взять справочник по WinAPI? |
05.02.2008, 19:35 | #8 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
1. "После создания всех компонентов" это где??? не в OnCreate, надеюсь?
2. Всё, что будет отправлено из текущего потока через SendMessage в этот цикл не попадет. 3. Справочник по WinApi можно взять, как минимум, здесь: http://www.google.com/search?hl=en&q...=Google+Search Если траффик позволяет, лучше скачать MSDN http://www.microsoft.com/express/dow...n/Default.aspx - совсем другие пироги |
05.02.2008, 19:37 | #9 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
справочные файлы из MS SDK также устанавливаются вместе с Delphi 7.
|
05.02.2008, 19:38 | #10 |
Форумчанин
Регистрация: 12.06.2007
Сообщений: 130
|
OnCreate? Проект то на WinAPI.
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как заставить компонент TTrackBar обрабатывать события мыши? | Никки | Общие вопросы Delphi | 5 | 29.08.2008 14:17 |
Рисунок на кнопке | JIimonKa | Общие вопросы Delphi | 3 | 27.05.2008 07:41 |
Могут ли обрабатывать нажатия клавиш окна, отличные от активного? | Gorlum | Общие вопросы Delphi | 14 | 27.10.2007 17:28 |
как обрабатывать события с клавы? | proglamer | Паскаль, Turbo Pascal, PascalABC.NET | 13 | 25.10.2007 11:41 |
скрипт, который бы смог забирать почту с почтового сервера (pop3) и обрабатывать ее | Hallo | PHP | 11 | 21.11.2006 21:18 |