如何用SendMessage()函数传递字符串

来源:互联网 发布:便筏 元数据损坏 编辑:程序博客网 时间:2024/04/30 09:16
 

如何用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);  
  }  
 

原创粉丝点击