SendMessage如何返回值??


請問如何讓SendMessage返回一個字符串?
就像發送WM_GETTEXT那樣,把獲取的text放到lparam參數中??

7 个解决方案

#1


自己重寫一下SendMessage

#2


可以用讓它反回一個字符串指針.

#define WM_MYMSG WM_USER + 101

ON_MESSAGE(WM_MYMSG, OnMyMsg)

TCHAR* pszText = (TCHAR*)SendMessage(WM_MYMSG);
if(pszText != NULL)
  TRACE(pszText); // test!!!

LRESULT CMyDlg::OnMyMsg(WPARAM wParam, LPARAM lParam)
{
   TCHAR* pszText = new TCHAR[MAX_PATH];
   lstrcpy(pszText, "Hello!");
   return (LRESULT)pszText;
}

#3


CString str;
SendMessage(MSG, 0,(LPARAM)(LPCSTR)str.GetBuffer(str.GetLength()));

#4


SendMessage如果是自己的消息,那么返回值只要是UINT大小的都可以

但要是返回字符串指針,只能在進程內傳遞,而不能跨進程傳遞

如果是系統的消息,就只能按照系統給的返回值

#5


TCHAR szText[256];
SendMssage(...,NULL, (LPARAM)szText);

在響應函數中去填充這個地址

LRESULT CXXX::OnMsg(WPARAM wParam, LPARAM lParam)
{
  lstrcpy((TCHAR*)lParam, "Hello!");
  return 0;
}

#6


postmessage有返回值,用這個比較的方便。

#7


非常感謝 
 mynamelj(風之羽翼)大哥的幫忙
謝謝你再qq中對我的解釋

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com