Форум: "Основная";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];
ВнизКак из своего класса обрабатывать сообщения некого окна? Найти похожие ветки
← →
Zilog © (2004-12-16 14:58) [0]Как из своего класса обрабатывать сообщения некого окна?
есть у меня класс, возникла нужда обработать некоторые сообщения адресованные форме. В классе известен только handle этого окна.
Каким образом это можно сделать?
← →
Digitman © (2004-12-16 15:04) [1]while PeekMessage(msg, somehandle, 0, 0, PM_REMOVE) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
← →
Zilog © (2004-12-16 15:53) [2]я так понимаю PeekMessage надо вызывать постоянно, на предмет проверки новых сообщений... мне это не совсем подходит.
Да и PM_REMOVE видимо следует, к тому же поменять на PM_NOREMOVE, чтобы не лишить окошко обрабатывать положенные ей месседжи.
А нет ли возможности переопределить обработку сообщений на себя? Чтобы процедура обработки вызывалась по мере появления новых сообщений.
← →
Digitman © (2004-12-16 16:00) [3]Удалено модератором
← →
Суслик © (2004-12-16 16:00) [4]
> А нет ли возможности переопределить обработку сообщений
> на себя?
переопределить оконную функцию.
← →
Zilog © (2004-12-16 16:05) [5]>>ЧТО ТЕБЕ НАДОБНО, СТАРЧЕ ...
делаю компонент, который влияет на визуализацию окна.
Нужно обрабатывать сообщения, которые возникают к примеру при перемещении окна...
← →
Zilog © (2004-12-16 16:08) [6]>>ЧТО ТЕБЕ НАДОБНО, СТАРЧЕ ...
делаю компонент, который влияет на визуализацию окна.
Нужно обрабатывать сообщения, которые возникают к примеру при перемещении окна...
← →
Digitman © (2004-12-16 16:18) [7]SetWindowLong() - самое простое и очевидное решение.
← →
Zilog © (2004-12-16 16:18) [8]>>Digitman © (16.12.04 16:00) [3]
>>см. SetWindowLong() с параметром GWL_WNDPROC
GWL_WNDPROC - Sets a new address for the window procedure.
Получается SetWindowLong полностью переопределяет оконные функции?
← →
Суслик © (2004-12-16 16:20) [9]
> Получается SetWindowLong полностью переопределяет оконные
> функции?
1 получи старое значене оконной функции
2 определи новую функцию. В случае если есть потребность вызова старой фнукции вызываешь.
← →
Reindeer Moss Eater © (2004-12-16 16:20) [10]Интересно, а как можно переопределить "неполностью"
← →
Digitman © (2004-12-16 16:21) [11]
> Получается SetWindowLong полностью переопределяет оконные
> функции?
да.
с условиями, оговоренными в MSDN
← →
Zilog © (2004-12-16 16:21) [12]>>Reindeer Moss Eater ©
ну к примеру после обработки сообщений родной оконной процедурой, сообщения (необработанные) передавались мне :)
Или такое невозможно?
← →
Суслик © (2004-12-16 16:23) [13]
> [12] Zilog © (16.12.04 16:21)
наоборот делай...
ну в общем я написал уже выше
← →
Zilog © (2004-12-16 16:23) [14]>Суслик © (16.12.04 16:20) [9]
>1 получи старое значене оконной функции
не намекнёте ли название функции?
← →
Суслик © (2004-12-16 16:25) [15]
> [14] Zilog © (16.12.04 16:23)
Неужели не догадаешься сам? :)))
Set на Get замени...
← →
Digitman © (2004-12-16 16:30) [16]Удалено модератором
← →
Суслик © (2004-12-16 16:32) [17]Удалено модератором
← →
Zilog © (2004-12-16 16:32) [18]Удалено модератором
← →
Digitman © (2004-12-16 16:33) [19]Удалено модератором
← →
Zilog © (2004-12-16 16:34) [20]Удалено модератором
← →
Суслик © (2004-12-16 16:36) [21]Удалено модератором
← →
Zilog © (2004-12-16 16:39) [22]Удалено модератором
← →
Zilog © (2004-12-16 16:40) [23]Удалено модератором
← →
Zilog © (2004-12-16 16:42) [24]непонимаю, что указывать в качестве нового параметра?
new address for the window procedure -
и как мне узнать адрес своей процедуры?
← →
Суслик © (2004-12-16 16:44) [25]
> [24] Zilog © (16.12.04 16:42)
> и как мне узнать адрес своей процедуры?
открываешь в модуле classes.pas тело фукнции AllocateHWnd и изучаешь содержимое, как модно тут говорить, до полного пресветления.
← →
Digitman © (2004-12-16 16:48) [26]
> указание тобою на размеры моего мозга, явно тебе чети не
> делает
мне оно по поясу - твоя якобы оценка якобы моей якобы чести.
> что указывать в качестве нового параметра
адрес оконной ф-ции.
> как мне узнать адрес своей процедуры
для начала неполохо было бы НАПИСАТЬ самому эту ф-цию.
и потом уе рассуждать, кто кому какую честь делает или не делает.
справка, сударь, дана для чтения, анализа и последующих действий по образу и подобию ! а не для "щоб було".
← →
Суслик © (2004-12-16 16:51) [27]Вечная тема - спецы и новички-торопыги :)))
> [26] Digitman © (16.12.04 16:48)
Собственно вопрос о том, как из метода сделать оконную функцию (а это нужно, т.к. речь была про класс) вполне закономерен. И не сразу наткнешься на реализацию этого.
Имхо.
← →
Digitman © (2004-12-16 16:55) [28]
> Собственно вопрос о том, как из метода сделать оконную функцию
>
не согласен.
в вопросе об это нет ни слова.
более того - нет и не может быть никаких сообщений, адресованных форме, ибо Win32, сам понимаешь, знать не знает ни о каких бы то там ни было формах : там есть "окна" и не более того. А применительно к "окнам" есть и соотв. Win32API-ф-ции , о которых было и конкретные упомимнание и намеки.
← →
Digitman © (2004-12-16 16:58) [29]
> сообщения некого окна
> сообщения адресованные форме
пока не будет четкого понимания соответствия и взаимосвязи этих терминов, механизмов, реализаций - реакция моя будет всегда одна и та же.
← →
Суслик © (2004-12-16 17:01) [30]Удалено модератором
← →
Zilog © (2004-12-16 21:04) [31]Удалено модератором
← →
Anatoly Podgoretsky © (2004-12-16 21:34) [32]Удалено модератором
← →
Zilog © (2004-12-16 21:39) [33]Удалено модератором
← →
Gero © (2004-12-16 22:27) [34]Удалено модератором
← →
Verg © (2004-12-16 22:30) [35]Удалено модератором
← →
Gero © (2004-12-16 22:34) [36]Удалено модератором
← →
Fay © (2004-12-17 05:32) [37]Весёлая ветка 8)
← →
Zilog © (2004-12-17 15:17) [38]а сабж моржно сделать через
Application.OnMessage
без вышеописанного геморроя.
>>Fay © (17.12.04 05:32) [37]
Да, старческий маразм даёт о себе знать.
← →
Digitman © (2004-12-17 15:25) [39]
> Zilog © (17.12.04 15:17) [38]
> сабж моржно сделать через
> Application.OnMessage
цитирую :
> из своего класса
TApplication - ТВОЙ класс ?!
И ты в вопросе, конечно же, ЯВНО упомянул, что твой класс создает окно в основном трэде процесса ?!
И у кого после этого "маразм", спрашивается ?
Уймись.
И садись за книжки.
← →
Zilog © (2004-12-17 15:41) [40]>>Digitman © (17.12.04 15:25) [39]
>>И у кого после этого "маразм", спрашивается ?
У тебя например.
Отсутствие достаточных знаний - не признак маразма.
А вот необьяснимое желание научить всех жить, указать каждому пальцем направление - как минимум повод задуматься.
Я конечно понимаю, что ты себя очень любишь, но не надо при каждом случае это показывать.
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.038 c