|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
D7: Illegal message method index
Всем доброго!
По сабжу: Есть программа, которая по выполнению некоторой операции отправляет сообщение. WinSight32 из Delphi и Spy+ из VisualStudio идентифицируют это сообщение как $C0B5 (WinSight32) и $C0BE (Spy+). Вопрос в следующем: Код:
const PROGRAMM_MESSAGE=49333;// (или WM_APP+16565 или $C0B5) ... procedure InMessage(var a:TMessage); message PROGRAMM_MESSAGE;// собственно ошибка компиляции в сабже Код:
... begin SendMessage(ProgrammHandle,PROGRAMM_MESSAGE,0,0);// тут все в порядке Ф1 говорит, что такое может быть только при отрицательном значении message (вернее <=0), а тут... за рамки integer (max 2 млрд с копейками), а уж тем более cardinal (4 млрд с копейками) явно не выхожу. И еще, все компилируется нормально, если Код:
PROGRAMM_MESSAGE<=WM_APP+16383; Как можно обработать получение данного сообщения? |
#2
|
||||
|
||||
тему можно закрыть - проблема решена.
Для интересующихся (коих оказалось очень не много ) из DRKB вычитано: '...Диапазон номеров сообщений от $8000 (32768) до $BFFF (49151) пока ничем не занят, но зарезервирован Windows для использования в будущем. Авторы Delphi поступили не совсем корректно, использовав верхнюю часть этого диапазона (с адреса $B000 (45046)) для своих собственных сообщений....' конечно не вариант, но как-то может объяснить "нежелание" компилировать модуль. Для обработки этого сообщения самый простой путь - переопределение WndProc, что и было с успехом проделано и работает |
#3
|
||||
|
||||
вообще-то:
Цитата:
поэтому разработчики Delphi ничего некорректного не сделали. так же есть RegisterWindowMessage а в данном случае Вы попали ($C0B5) в диапазон: 0xC000 through 0xFFFF - String messages for use by applications. это диапазон для RegisterWindowMessage, поэтому Delphi и ругается. Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 15.02.2011 в 09:02. |