自定义消息发送unicode或ascii字符串

来源:互联网 发布:淘宝保证金骗局 编辑:程序博客网 时间:2024/06/06 00:24

有时候需要通过消息发送字符串。下面是我实现的一种方法,可以发送unicode或ascii字符串。

虽然写出来了,但是还有一些细节,自己也没搞明白!!!

为了使代码通用,使用了以下函数和变量定义:

字符串指针:LPCTSTR、TCHAR*(有些函数不识别LPCTSTR)

通过字符串指针获取字符串长度:_tcslen 

size_t wcslen( const wchar_t * _Str);size_t strlen( const char * _Str);


字符串拷贝的问题



消息定义:

#ifndef WM_TEST1#define WM_TEST1 (WM_APP+1)#endifBEGIN_MESSAGE_MAP(CTestDlg, CDialogEx)//...ON_MESSAGE(WM_TEST1,&CTestDlg::OnTest)END_MESSAGE_MAP()

触发消息函数定义:

void CTestDlg::OnBnClickedButton1(){LPCTSTR sendStr = _T("哈哈");//发送的字符串//发给自己::SendMessage( this->GetSafeHwnd(), WM_TEST1, (UINT)sendStr, 0 );}


消息响应函数声明和定义:

//声明在头文件afx_msg LRESULT  OnTest( WPARAM w,LPARAM l );//定义在cppLRESULT CTestDlg::OnTest( WPARAM w,LPARAM l ){int n =  _tcslen((TCHAR*)w);//string.hTCHAR *ptest = (TCHAR *)malloc( n*sizeof(TCHAR)+2 );//unicode下需要+2memcpy( ptest, (TCHAR*)w, n*sizeof(TCHAR)+2 );free(ptest);return 0;}

其实没必要每次都malloc、free,这样对效率影响比较大,还不如直接分配出一大块内存出来专门存放字符串。上面的方式主要是灵活一些。以时间换空间了。