|
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 :)
|