QQ登录

只需一步,快速开始

上位机MFC如何将BSTR类型转换成CString类型

[ 复制链接 ]
BSTR在定义是可以使用宏L""赋值,也可以调用函数SysAllocString赋值。
例如
BSTR bstr = ::SysAllocString(L"Hello world!");
bstr=L"Hello world!";

要转换成CString类型,可以显示地强制转换。
如CString str = (CString)bstr;
可以在对话框工程中运行下面代码,查看效果。
  1. #include <comdef.h>
  2. void CGkbc8Dlg::OnPaint()
  3. {
  4.         if (IsIconic())
  5.         {
  6.                 CPaintDC dc(this); // device context for painting

  7.                 SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

  8.                 // Center icon in client rectangle
  9.                 int cxIcon = GetSystemMetrics(SM_CXICON);
  10.                 int cyIcon = GetSystemMetrics(SM_CYICON);
  11.                 CRect rect;
  12.                 GetClientRect(&rect);
  13.                 int x = (rect.Width() - cxIcon + 1) / 2;
  14.                 int y = (rect.Height() - cyIcon + 1) / 2;

  15.                 // Draw the icon
  16.                 dc.DrawIcon(x, y, m_hIcon);
  17.         }
  18.         else
  19.         {
  20.                 CPaintDC dc(this);
  21.         BSTR bstr = ::SysAllocString(L"Hello world!");
  22. bstr=L"Hello world!";
  23.         //强制转换
  24.         CString str = (CString)bstr;

  25.         CString strText = _T("");
  26.         strText.Format(_T("str = %s"), str);
  27.         dc.TextOut(100, 50, strText);

  28.         ::SysFreeString(bstr);
  29.                 CDialog::OnPaint();
  30.         }
  31. }
复制代码


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索