Вверх ↑
Этот топик читают: Гость
Ответов: 209
Рейтинг: 3
#16: 2006-11-16 09:52:50 ЛС | профиль | цитата
Для работы в фул дуплексе без сообщений от драйвера никак нельзя. Без доработки MainForm можно наверное, через event но у меня пока не получилось. Хотя сложности в доработке не вижу.
Копию моей MainForm не рекомендую, могут быть отличия по версиям HiAsm. Да, еще, компиляцию под fpc не гарантирую. А теперь рекомендации чайника по доработке компонента.
1.Выделяете на схеме MainForm.
2.Нажмите ctrl-F, появится код компонента.
3.В самом начале будет строчка типа...
uses Windows,Kol,Share,Win,Messages,MMSYSTEM;[/code]
Вставьте слово которое выделено заглавными буквами.
4.Идем ниже, и в разделе "public" вставляем три строчки
     _event_onWimData:THI_Event;
     _event_onWomData:THI_Event;
_event_onCopyData:THI_Event;
(увидите там похожие) 5.Идем ниже и после слова "implementation" ищем начало функции обработки сообщений:
function THIMainForm._onMessage;
begin
case Msg.message of
WM_COPYDATA: _hi_OnEvent(_event_OnCopyData,Msg.LParam);//***********************
MM_WIM_DATA: _hi_OnEvent(_event_OnWimData{,Msg.lParam});//************************
MM_WOM_DONE: _hi_OnEvent(_event_OnWomData{,Msg.wParam});//***********************
WM_ACTIVATE:
if Msg.WParam > 0 then
begin
_hi_OnEvent(_event_onActivate);
end
else if Msg.WParam = 0 then _hi_OnEvent(_event_onDeActivate);
//WM_CREATE: if IsMain then Applet.SetPosition(_prop_Left,_prop_Top);
//WM_SHOWWINDOW: if Msg.wParam = 1 then SendMessage(Control.Handle,WM_USER+34,0,0);//_OnShow(Control);
WM_CLOSE: begin _onClose(Control,Result);Result := not Result; exit; end;
WM_SIZE: if isMain and Assigned(Applet) then Applet.Width := Control.Width;
WM_MOVE:
begin
if isMain and Assigned(Applet) then
Applet.SetPosition(Control.Left,Control.Top);
if Assigned(Control.OnPaint) then _hi_OnEvent(_event_onMove);
end;
end;
Добавьте три строчки, которые выделены рядом звездочек. 6.Закройте код. Снова выделяйте MainForm и нажимаете ctrl-G. Появится код ini файла.
7. В разделе "[Methods]" вставьте три строчки:
onCopyData=Получено сообщение WM_COPYDATA|2|
onWimData=Получено сообщение MM_WIM_DATA|2|
onWomData=Получено сообщение MM_WOM_DATA|2|
8.Закройте все (в т.ч. и сам конструктор). 9.Снова откройте HiAsm, на MainForm справа внизу появятся три выходные точки.
ВСЕ.
карма: 0

0
Ответов: 3851
Рейтинг: 159
#17: 2006-11-16 10:07:39 ЛС | профиль | цитата
ХЭМ писал(а):
Хотя сложности в доработке не вижу
мля, ты издеваешься что-ли?
Легче застрилица.
карма: 0
начавший
0
Ответов: 5446
Рейтинг: 323
#18: 2006-11-16 10:41:45 ЛС | профиль | цитата
ХЭМ, теги code для кого придуманы? Пощади глаза пользователей!
карма: 1

0
Ответов: 9906
Рейтинг: 351
#19: 2006-11-16 10:52:30 ЛС | профиль | цитата
Из всего этого - мораль: надо придумывать элемент типа HookMessage (или более деликатно - ReceiveMessage). Который перехватывает сообщения (через sub-classing к примеру) у хэндла принятого с верхней точки Handle.
Имеет нижние точки типа LParam, WParam, может чего еще...
И левую - doResult, блокирующую обработку сообщений оригинальным окном.
карма: 9

0
Ответов: 209
Рейтинг: 3
#20: 2006-11-16 14:03:55 ЛС | профиль | цитата
iarspider, так я ж специально для чайников, чтобы текст выглядел натурально, как в открытом коде. Ты ж видишь они три строчки в код бояться вставить, а от вида кода в тегах у них наверное все опуститься
(кто то пометил в мей правке лишнюю строчку, WM_COPYDATA для этой схемы ни к чему, то у меня для других задач было)
Galkov, да уж не помешало бы такой элементик, а то обработчика главного окна (или другой формы) на все виды сообщений не напасешся.
карма: 0

0
Ответов: 9906
Рейтинг: 351
#21: 2006-11-16 14:27:10 ЛС | профиль | цитата
ХЭМ, ты же сам опубликовал WM_COPYDATA в _onMessage
Народ честно скопирует, начнутся вопросы ....
карма: 9

0
Ответов: 2125
Рейтинг: 159
#22: 2006-11-16 16:58:38 ЛС | профиль | цитата
Galkov писал(а):
через sub-classing к примеру
Зачем так грубо? В KOL есть для этого процедура TControl.AttachProc.
карма: 1

0
Ответов: 209
Рейтинг: 3
#23: 2006-11-16 17:17:21 ЛС | профиль | цитата
Galkov, неужели я сам добавил? Ну и пусть будет - может кому в хозяйстве пригодиться.
карма: 0

0
Ответов: 632
Рейтинг: 16
#24: 2006-11-16 17:53:34 ЛС | профиль | цитата
ХЭМ, а толку, у меня этот код http://hiasm.hexshock.com/xf//getfile/4668 невпихивается всеравно в хайасм хоть и изминения в мэинформ сделал как выше написано...
пишет ошибку "List index out of bounds (2)" из всего только впихнулись маинформ, бутон и мемори!
карма: 0

0
Ответов: 9906
Рейтинг: 351
#25: 2006-11-16 18:00:11 ЛС | профиль | цитата
tsdima писал(а):
Зачем так грубо? В KOL есть для этого процедура TControl.AttachProc.

Да как-то не вошло у нас в моду выводить в Win-элементах нижнюю точку типа PControl. В отличии от Handle.
А что, super-classing из KOL - это уже не грубо
Кстати, приоритет аттачей не самый высокий - с разборками полетов могут возникнуть проблемы...
Объясняй потом, почему на батон с режимом DefaultBtn не получат нажатого Enter-а в перехвате...
Оно надо

ХЭМ, ну а я что-ли. Это же я не могу знать достоверно, используешь ли ты это (чтобы удалить). Но не наоборот
карма: 9

0
Ответов: 4
Рейтинг: 0
#26: 2006-11-16 19:39:34 ЛС | профиль | цитата
По поводу таскания с собой и версии.
1)Переименовать к примеру в bass2.1.dll
2)В Bass.pas строка 727 исправить на пункт 1)
3)Загрузить в MemoryStream
4)Первый запуск.1-Проверяем WinDir на наличие этой dll,
Не находим.2-Извлекаем из MemoryStream в WinDir.3-Запускаем
Ваше Приложение второй раз и убиваем первое.
( Очень внимательный Пользователь может заметит , что
~ 1sec Работало два одноименных процесса ,но при следуюших
запусках подумает о походе к окулисту )
5)n запуск.1-Проверяем WinDir на наличие этой dll,находим.
Переходим к загрузке Вашых данных (*.m3u;*.* и т д)

Проверил на XPsp2 Proc 2.4 нормально
Проверил на 98 Proc 160 нормально
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 209
Рейтинг: 3
#27: 2006-11-17 09:28:06 ЛС | профиль | цитата
Хм, Geka, действительно ссылка code576 какую то лабуду дает. Да еще перестала запускаться эта же схема с моего компа, запустилась только при перезапуске конструктора.
Попробуем еще раз.
code_587

[size=-2]------ Добавлено в 09:14
Упс! То же самое. Ну это вопрос к организаторам форума. Из иных средств связи имею мыло. Могу скинуть куда скажете.
PS. Кстати в профиле можно было бы указать мыло участников (хотя бы для тех кто разрешает).

[size=-2]------ Добавлено в 09:28
Вячеслав1972, ну так это на каждом компе надо делать.
карма: 0

0
файлы: 1code_587.txt [91.8KB] [628]
Ответов: 9906
Рейтинг: 351
#28: 2006-11-17 10:52:10 ЛС | профиль | цитата
Я бы даже сказал, что не в первый раз
http://hiasm.hexshock.com/xf/topic.php?p=33266#P33266

ХЭМ, ты в буфер обмена копировать при русской раскладке не пробовал

[size=-2]------ Добавлено в 10:52
Не буду же я все время переводить твои файлы на русский...
code_588
карма: 9

0
файлы: 1code_588.txt [85.2KB] [516]
Ответов: 8953
Рейтинг: 824
#29: 2006-11-17 10:54:02 ЛС | профиль | цитата
ХЭМ, посмотри http://hiasm.hexshock.com/xf/topic.php?p=40194#P40194
карма: 19

0
Ответов: 209
Рейтинг: 3
#30: 2006-11-20 08:47:37 ЛС | профиль | цитата
ХЭМ, ты в буфер обмена копировать при русской раскладке не пробовал

------ Добавлено в 10:52
Не буду же я все время переводить твои файлы на русский...

Galkov, а где про это написано, ни в хэлпе, ни в справке по форуму не нашел. Да и причем здесь язык (там на русском только коментарии да captin), когда ссылка не читается правильно.
Леонид, видел, по моему с той задачей проблем нет.
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)