|
alex 님이 쓰신 글 :
: 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 :)
|