rendered paste body TIaxEvent = record
etype : integer;
input : Single;
output : Single;
text_type : integer;
callNo : integer;
text_message : TByteArray255;
state : integer;
remote : TByteArray255;
remote_name : TByteArray255;
local : TByteArray255;
local_context : TByteArray255;
end;
procedure TIaxClient.WndProc(var MsgRec: TMessage);
type
PIaxEvent = ^TIaxEvent;
var
ptrIaxEvent : PIaxEvent;
lLengthIaxEvent : longint;
// strTemp : string;
begin
//1304 ShowMessage(IntToStr(sizeof(TIAxEvent)));
try
if(MsgRec.Msg = WM_IAX) then
begin
//New(ptrIaxEvent); //.CopyDataStruct.lpData
//MoveMemory (ptrIaxEvent, Ptr(MsgRec.LParam), SizeOf(TIaxEvent));
ptrIaxEvent := Ptr(MsgRec.LParam);
LogForm.Memo1.Lines.Add(IntToStr(ptrIAXEvent.etype));
struct iaxdll_event {
int type;
float input;
float output;
int text_type;
int callNo; /* call number for IAX text */
char message[IAXC_EVENT_BUFSIZ];
int state;
char remote[IAXC_EVENT_BUFSIZ];
char remote_name[IAXC_EVENT_BUFSIZ];
char local[IAXC_EVENT_BUFSIZ];
char local_context[IAXC_EVENT_BUFSIZ];
};
static int iaxc_callback(iaxc_event e) {
iaxdll_event *event;
COPYDATASTRUCT MyCDS;
/* iaxc_event *copy;
copy = (iaxc_event *)malloc(sizeof(iaxc_event));
memcpy(copy, &e, sizeof(iaxc_event));
evt.SetClientData(copy);
*/
event = (iaxdll_event *)malloc(sizeof(iaxdll_event));
event->type = e.type;
if (e.type == IAXC_EVENT_TEXT) {
event->text_type = e.ev.text.type;
event->callNo = e.ev.text.callNo;
strncpy(event->message, e.ev.text.message, (IAXC_EVENT_BUFSIZ - 1));
} else
if (e.type == IAXC_EVENT_LEVELS) {
event->input = e.ev.levels.input;
event->output = e.ev.levels.output;
} else if (e.type == IAXC_EVENT_STATE) {
event->state = e.ev.call.state;
event->callNo = e.ev.call.callNo;
strncpy(event->remote, e.ev.call.remote, (IAXC_EVENT_BUFSIZ - 1));
strncpy(event->remote_name, e.ev.call.remote_name, (IAXC_EVENT_BUFSIZ - 1));
strncpy(event->local, e.ev.call.local, (IAXC_EVENT_BUFSIZ - 1));
strncpy(event->local_context, e.ev.call.local_context, (IAXC_EVENT_BUFSIZ - 1));
}
MyCDS.cbData = sizeof(iaxdll_event);
MyCDS.lpData = (void *)event;
MyCDS.dwData = 1;
PostMessage(main_handle, WM_USER + 201, (WPARAM) NULL, (LPARAM) &MyCDS);
return 1;
}