您的位置:首页 > 其它

sendmessage 发送字符串

2015-09-07 10:07 211 查看
 
如何用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);  

  }  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: