All pastes #3553 Raw Edit

Anonymous

public text v1 · immutable
#3553 ·published 2004-12-29 22:56 UTC
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;
}