如题。谢谢帮忙。
解决方案 »
- 如何判断鼠标点击在图片控件的位置啊?
- 请教一个关于ADO进行SQL数据库恢复的问题
- 请教并口通信问题!!
- 我是计算机系的啊,曾经很傻的想过,要是有女生能做知心朋友,而且长相还不错,那有多好啊~~呵呵
- 怎样根据位图生成不规则形状窗口?
- vc写的ocx控件使程序越来越慢 ----------- 解决者 ------- 100分
- WINDOWS程序设计初学者的困惑:
- 困扰了我一个星期的问题,今天问了老师,他也无法解决!大家来帮我,非常感谢
- VC对话框类与以话框类相互访问
- 轻松那分哦!!!
- 能否提供一个利用管道实现对话框程序与控制台程序通信的例子?
- 新手问一下:在vc中用什么函数把字符数字转化为int型。
char * p = "This is a test"; 或 LPSTR p = "This is a test"; 或在已定义Unicode应的用程序中 TCHAR * p = _T("This is a test"); 或 LPTSTR p = _T("This is a test");
CString theString = chArray;
theString.Format(_T("%s"), chArray);
theString = p; (2) CString转换成char* 若将CString类转换成char*(LPSTR)类型,常常使用下列三种方法: 方法一,使用强制转换。例如: CString theString( "This is a test" );
LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString; 方法二,使用strcpy。例如: CString theString( "This is a test" );
LPTSTR lpsz = new TCHAR[theString.GetLength()+1];
_tcscpy(lpsz, theString); 需要说明的是,strcpy(或可移值Unicode/MBCS的_tcscpy)的第二个参数是 const wchar_t* (Unicode)或const char* (ANSI),系统编译器将会自动对其进行转换。 方法三,使用CString::GetBuffer。例如: CString s(_T("This is a test "));
LPTSTR p = s.GetBuffer();
// 在这里添加使用p的代码
if(p != NULL) *p = _T('\0');
s.ReleaseBuffer();
// 使用完后及时释放,以便能使用其它的CString成员函数 (3) BSTR转换成char* 方法一,使用ConvertBSTRToString。例如: #include
#pragma comment(lib, "comsupp.lib")
int _tmain(int argc, _TCHAR* argv[]){
BSTR bstrText = ::SysAllocString(L"Test");
char* lpszText2 = _com_util::ConvertBSTRToString(bstrText);
SysFreeString(bstrText); // 用完释放
delete[] lpszText2;
return 0;
} 方法二,使用_bstr_t的赋值运算符重载。例如: _bstr_t b = bstrText;
char* lpszText2 = b; (4) char*转换成BSTR 方法一,使用SysAllocString等API函数。例如: BSTR bstrText = ::SysAllocString(L"Test");
BSTR bstrText = ::SysAllocStringLen(L"Test",4);
BSTR bstrText = ::SysAllocStringByteLen("Test",4); 方法二,使用COleVariant或_variant_t。例如: //COleVariant strVar("This is a test");
_variant_t strVar("This is a test");
BSTR bstrText = strVar.bstrVal; 方法三,使用_bstr_t,这是一种最简单的方法。例如: BSTR bstrText = _bstr_t("This is a test"); 方法四,使用CComBSTR。例如: BSTR bstrText = CComBSTR("This is a test"); 或 CComBSTR bstr("This is a test");
BSTR bstrText = bstr.m_str; 方法五,使用ConvertStringToBSTR。例如: char* lpszText = "Test";
BSTR bstrText = _com_util::ConvertStringToBSTR(lpszText); (5) CString转换成BSTR 通常是通过使用CStringT::AllocSysString来实现。例如: CString str("This is a test");
BSTR bstrText = str.AllocSysString();
…
SysFreeString(bstrText); // 用完释放 (6) BSTR转换成CString 一般可按下列方法进行: BSTR bstrText = ::SysAllocString(L"Test");
CStringA str;
str.Empty();
str = bstrText; 或 CStringA str(bstrText);
char* ch = str.GetBuffer(0);//获得CString对象的字符串缓冲区指针