2015-07-27 2 views
-2

Я новичок в Delphi, и я пытаюсь написать экспериментальный плагин для программы в Lazarus. Я нашел бесплатный исходный код из другого плагина, и я стараюсь основываться на нем. Мой плагин должен получить сообщение, отправленное программой, и вставить строку в строку редактирования. До сих пор мне удалось реализовать обработчик программы. Тем не менее, я придерживался CopyDataStruct, который работает с сообщением, отправленным основной программой.Lazarus/Delphi: Msg.CopyDataStruct не распознан

ОБНОВЛЕНИЕ Я думаю, что отзыв от Марко ван де Воорта может объяснить источник проблемы. Я провел некоторое исследование после поиска учебника, и кажется, что эти сообщения просто потеряны.

Так что я переписать свой код, в том числе:

function WndCallback(Ahwnd: HWND; uMsg: UINT; wParam: WParam; lParam: LParam):LRESULT; stdcall; 

begin 
    case uMsg of WM_COPYDATA: 
    begin 
     Result := TForm1.WMCopyData(); 
     exit; 
     end; 
     else 
     Result := CallWindowProc(PrevWndProc, Ahwnd, uMsg, WParam, LParam); 
    end; 

end; 

, а также

PrevWndProc:=Windows.WNDPROC(SetWindowLongPtr(Self.Handle,GWL_WNDPROC,PtrInt(@WndCallback))); 

в разделе FormCreate.

Теперь у меня есть ошибка с результатом: = TForm1.WMCopyData(); Я не уверен, какие параметры должны быть переданы в эту функцию. Он объявляется как: TForm1.WMCopyData (var Msg: TCopyDataStruct); но ни «Msg», ни «TCopyDataStruct» не работают. Не могли бы вы мне помочь?

+0

Посмотрите, как TWMCopyData определяется в Lazarus. Вы можете нажать Ctrl + клик на нем, и Lazarus должен открыть соответствующий исходный файл. –

+0

Очень полезный намек. Я проверю. Спасибо – Krzychu

+1

Вы объявляете параметр как 'var TWMCopyData: Msg', что означает параметр с именем' TWMCopyData' и type 'Msg'. Я предполагаю, что вам нужно их поменять: 'var Msg: TWMCopyData'. – Abelisto

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^