如何用SendMessage()函數傳遞字符串

一、兩個參數都帶字符串的形式:

-----------------------------
void   CAaaDlg::OnButton1()  
{
        char*   p1   =   "Willis ";
        char*   p2   =   "VCHelp ";
        SendMessage(WM_CURRENTINFO,   (WPARAM)p1,   (LPARAM)p2   );
}
LRESULT   CAaaDlg::OnCurrentInfo(WPARAM   wParam,   LPARAM   lParam   )
{
        MessageBox((LPSTR)wParam,(LPSTR)lParam,0);//消息函數裏接收字符串
        return   0;
}  

--------

二、只帶一個字符串的形式:
CString   strPara   =   _T( "fggg ");
::SendMessage(hWnd,WM_XXXX,0,(LPARAM)(LPCTSTR)strPara);

OnMessageXXXX(WPARAM   wParam,LPARAM   lParam)
{
        CString   strddd   =   (LPCTSTR)lParam;     //在消息處理函數裏接收字符串
}  


////////how   to   use   wm_copydata   to   pass   string

使用WM_COPYDATA:

CString   str   =   _T(   "Hello "   );
HWND   hWndReceived   =   FindWindow(   "Receiver ",   NULL   );

COPYDATASTRUCT   cpd;
cpd.dwData   =   0;
cpd.cbData   =   strDataToSend.GetLength();
cpd.pData   =   (void*)str.GetBuffer(cpd.cbData);

SendMessage(   hWndReceived,   WM_COPYDATA,   0,   (LPARAM)   &   cpd   );
str.ReleaseBuffer();

加入映射宏:

BEGIN_MESSAGE_MAP(CMyWnd,   CWnd)
//{{AFX_MSG_MAP(CMyWnd)
...
ON_WM_COPYDATA()
...
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

...

映射函數:

BOOL   CMyWnd::OnCopyData(CWnd*   pWnd,   COPYDATASTRUCT*   pCopyDataStruct)  
{
   CString   strRecievedText   =   (LPCSTR)   (pCopyDataStruct-> lpData);
   return   CMyWnd::OnCopyData(pWnd,   pCopyDataStruct);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章