怎么在.exe和.dll之间传递CString? 我想在.exe和.dll之间用消息传递CString,但是lParam和wParam是不是只能传递数值?如果能传递CString请问怎么传递?如果不能传递CString那么还有什么方法实现.exe和.dll之间传递CString? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 基础类里刚刚看到一篇,正好介绍消息传递数据的.你的情况属于第三种吧.-----------------------------------------------------------------如何用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_MAPEND_MESSAGE_MAP()...映射函数:BOOL CMyWnd::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { CString strRecievedText = (LPCSTR) (pCopyDataStruct->lpData); return CMyWnd::OnCopyData(pWnd, pCopyDataStruct);} CListBox闪烁问题 怎么设置对话框中的图片显示与隐藏? 如何获取CRecordset中的记录个数????高分,,,,,救命!!!!! 200分急求图像多阀值分割的源代码,不够再给!! 在2000下如何读写并口 临界区是什么?能举个例子说明吗? 服务器端自己定义的异常类是不是没法在客户端捕获?不符合com规范? 怎么读主板系列号? 关于ActiveX控件的问题 如何dll里用适合win32的语言在界面上开辟一个区域,插入bmp位图 如何破坏 WinXp 操作系统,让它无法正常运行了? 介绍几个VC的源程序网站?提供源程序下载,学习网站?
-----------------------------------------------------------------如何用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);
}