|
Thanks for your tips.
Yes. the size was the problem..
int size = sizeof(SMediaCallInfo) + sCaller.Length() + 1;
SMediaCallInfo *pData = (SMediaCallInfo *)GlobalAlloc( GPTR, size );
Once i change to this, it works.. :)
nicekr.황경록 님이 쓰신 글 :
: hi alex! :)
:
: alex 님이 쓰신 글 :
: : I am trying to send some messages to other application.
: : But some how whenever i send string value it corrupted and i got wrong value.
: :
: : Can anyone help me out??
: :
: : //===============================================================================
: : From Sender Form..
: : //Test Send Message
: :
: : COPYDATASTRUCT oCopyData;
: : LPSTR pCaller = NULL;
: : SMediaCallInfo *pData = (SMediaCallInfo *)GlobalAlloc( GPTR, sizeof(SMediaCallInfo) );
:
: sizeof(SMediaCallInfo) ? do you check this size of bytes?
:
: :
: :
: : AnsiString sCaller("Jo.Robbins@hotmail.com");
: : memset( pData, 0, sizeof(SMediaCallInfo) );
:
: why use the memset? GPTR set the allocated memory area to zero.
: :
: : pData->dwSize = sizeof(SMediaCallInfo);
: : pData->dwMediaType = PBXTYPE_SMTP;
: : pData->dwCallRef = 498 + iCount;
: :
: : if ( !sCaller.IsEmpty() )
: : {
: : pData->lpCallerId = (LPSTR)GlobalAlloc( GPTR, sCaller.Length() + 1 );
: : strcpy( pData->lpCallerId, sCaller.c_str() );
: : }
: :
: : oCopyData.dwData = CALL_INFO_TAG;
: : oCopyData.cbData = pData->dwSize;
: : oCopyData.lpData = pData;
: :
: : ::SendMessage(Handle, WM_COPYDATA, (WPARAM)Handle, (LPARAM)&oCopyData );
: :
: : if ( pData->lpCallerId )
: : ::GlobalFree( pData->lpCallerId );
: : ::GlobalFree( pData );
: :
: :
: :
: : //===============================================================================
: : //OnCopyData of Form 2 - received data from Form 1
: :
: : COPYDATASTRUCT *pCopyData = (COPYDATASTRUCT *)Msg.LParam;
: : if ( pCopyData->dwData == CALL_INFO_TAG &&
: : pCopyData->cbData == sizeof(SMediaCallInfo) )
: :
: : {
: : SMediaCallInfo *pInfo = (SMediaCallInfo *)pCopyData->lpData;
: : if ( pInfo->dwSize == sizeof(SMediaCallInfo) )
: : {
: : ODS(DEBUG_INFO, "CallInfo: media=%u, call=0x%08x, caller id=%s",
: : pInfo->dwMediaType, pInfo->dwCallRef,pInfo->lpCallerId ? pInfo->lpCallerId : "" );
: : }
: : }
: :
: : 17:52:04.49 OnCopyData: recieved message from Desktop
: : 17:52:04.49 CallInfo: media=9, call=0x000001f2, caller id=on7\Tools\ <<= I am expecting Jo.Robbins@hotmail.com
: :
: : Thanks in advance..
:
: -_-... i append sample application for you.
: just see.. it make two project and send WM_COPYDATA with char pointer.
: if you want to testing with struct or class? just editing :)
: good luck :)
|