16.1如何将基本数据类型转换成CString类型
用CString的Format方法
void CDemoView::OnDraw(CDC* pDC)
{int a = 100;double b = 1.23;//将整型转换成CStringCString str1 = _T("");str1.Format(_T("%d"), a);//将实型转换成CStringCString str2 = _T("");str2.Format(_T("%f"), b);CString strText = _T("");strText.Format(_T("str1 = %s"), str1);pDC->TextOut(100, 50, strText);strText.Format(_T("str2 = %s"), str2);pDC->TextOut(100, 100, strText);
}
16.2如何将CString类型转换成基本数据类型
atoi:Convert a string to integer.
参考:http://baike.baidu.com/view/653935.htm
void CDemoView::OnDraw(CDC* pDC)
{CString str1 = _T("100");CString str2 = _T("1.23");//将CString转换成整型int a = atoi(str1);//将CString转换成实型double b = atof(str2);CString strText = _T("");strText.Format(_T("a = %d"), a);pDC->TextOut(100, 50, strText);strText.Format(_T("b = %f"), b);pDC->TextOut(100, 100, strText);
}
16.3如何将TCHAR类型转换成CString类型
void CDemoView::OnDraw(CDC* pDC)
{TCHAR sz[] = _T("Hello world!");//直接赋值CString str1 = sz;//调用CString::Format函数CString str2 = _T("");str2.Format(_T("%s"), sz); CString strText = _T("");strText.Format(_T("str1 = %s"), str1);pDC->TextOut(100, 50, strText);strText.Format(_T("str2 = %s"), str2);pDC->TextOut(100, 100, strText);
}
16.4如何将CString类型转换成TCHAR类型
void CDemoView::OnDraw(CDC* pDC)
{CString str = _T("Hello world!");//强制转换LPTSTR psz1 = (LPTSTR)(LPCTSTR)str;//调用CString::GetBuffer函数LPTSTR psz2 = str.GetBuffer(str.GetLength());str.ReleaseBuffer();CString strText = _T("");strText.Format(_T("psz1 = %s"), psz1);pDC->TextOut(100, 50, strText);strText.Format(_T("psz2 = %s"), psz2);pDC->TextOut(100, 100, strText);
}
16.5如何将TCHAR类型转换成BSTR类型
void CDemoView::OnDraw(CDC* pDC)
{TCHAR sz[] = _T("Hello world!");//调用ConvertStringToBSTR函数BSTR bstr1 = _com_util::ConvertStringToBSTR(sz);//使用_bstr_tBSTR bstr2 = _bstr_t(sz);CString strText = _T("");strText.Format(_T("bstr1 = %s"), (CString)bstr1);pDC->TextOut(100, 50, strText);strText.Format(_T("bstr2 = %s"), (CString)bstr2);pDC->TextOut(100, 100, strText);
}
16.6如何将BSTR类型转换成TCHAR类型
void CDemoView::OnDraw(CDC* pDC)
{BSTR bstr = L"Hello world!";//调用ConvertBSTRToString函数LPTSTR psz = _com_util::ConvertBSTRToString(bstr);CString strText = _T("");strText.Format(_T("psz = %s"), psz);pDC->TextOut(100, 50, strText);
}
16.7 如何将BSTR类型转换成CString类型
SysAllocString和SysFreeString
void CDemoView::OnDraw(CDC* pDC)
{BSTR bstr = ::SysAllocString(L"Hello world!");//强制转换CString str = (CString)bstr;CString strText = _T("");strText.Format(_T("str = %s"), str);pDC->TextOut(100, 50, strText);::SysFreeString(bstr);
}
16.8如何将CString类型转换成BSTR类型
void CDemoView::OnDraw(CDC* pDC)
{CString str = _T("Hello world!");//调用CString::AllocSysString函数BSTR bstr = str.AllocSysString();CString strText = _T("");strText.Format(_T("bstr = %s"), (CString)bstr);pDC->TextOut(100, 50, strText);::SysAllocString(bstr);
}
16.9 如何将DWORD类型转换成WORD类型
LOWORD和HIWORD
void CDemoView::OnDraw(CDC* pDC)
{//将1个DWORD类型数据分解成2个WORD类型数据DWORD dwValue = 0xFFAA5500;WORD wLow = LOWORD(dwValue);WORD wHigh = HIWORD(dwValue);CString strText = _T("");strText.Format(_T("DWORD:0x%08X"), dwValue);pDC->TextOut(100, 50, strText);strText.Format(_T("low-order word:0x%04X"), wLow);pDC->TextOut(100, 100, strText);strText.Format(_T("high-order word:0x%04X"), wHigh);pDC->TextOut(100, 150, strText);
}
16.10 如何将WORD类型转换成BYTE类型
LOBYTE和HIBYTE
void CDemoView::OnDraw(CDC* pDC)
{//将1个WORD类型数据分解成2个BYTE类型数据WORD wValue = 0xFF00;BYTE bLow = LOBYTE(wValue);BYTE bHigh = HIBYTE(wValue);CString strText = _T("");strText.Format(_T("WORD:0x%04X"), wValue);pDC->TextOut(100, 50, strText);strText.Format(_T("low-order byte:0x%02X"), bLow);pDC->TextOut(100, 100, strText);strText.Format(_T("high-order byte:0x%02X"), bHigh);pDC->TextOut(100, 150, strText);
}
16.11如何将WORD类型组合成DWORD类型
void CDemoView::OnDraw(CDC* pDC)
{//将2个WORD类型数据组合成1个DWORD类型数据WORD wLow = 0x5500;WORD wHigh = 0xFFAA;DWORD dwValue = MAKELONG(wLow, wHigh);CString strText = _T("");strText.Format(_T("low-order word:0x%04X"), wLow);pDC->TextOut(100, 50, strText);strText.Format(_T("high-order word:0x%04X"), wHigh);pDC->TextOut(100, 100, strText);strText.Format(_T("DWORD:0x%08X"), dwValue);pDC->TextOut(100, 150, strText);
}
16.12 如何将BYTE类型转换成WORD类型
void CDemoView::OnDraw(CDC* pDC)
{//将2个BYTE类型数据组合成1个WORD类型数据BYTE bLow = 0x00;BYTE bHigh = 0xFF;WORD wValue = MAKEWORD(bLow, bHigh);CString strText = _T("");strText.Format(_T("low-order byte:0x%02X"), bLow);pDC->TextOut(100, 50, strText);strText.Format(_T("high-order byte:0x%02X"), bHigh);pDC->TextOut(100, 100, strText);strText.Format(_T("WORD:0x%04X"), wValue);pDC->TextOut(100, 150, strText);
}
16.13 如何将COLORREF类型转换成RGB分量
void CDemoView::OnDraw(CDC* pDC)
{COLORREF cr = RGB(255, 128, 0);//R分量BYTE RED = GetRValue(cr);//G分量BYTE GREEN = GetGValue(cr);//B分量BYTE BLUE = GetBValue(cr);CString strText = _T("");strText.Format(_T("COLORREF值:0x%08X"), cr);pDC->TextOut(100, 50, strText);strText.Format(_T("R分量:0x%02X"), RED);pDC->TextOut(100, 100, strText);strText.Format(_T("G分量:0x%02X"), GREEN);pDC->TextOut(100, 150, strText);strText.Format(_T("B分量:0x%02X"), BLUE);pDC->TextOut(100, 200, strText);
}
16.14 如何给VARIANT类型赋值
void CDemoView::OnDraw(CDC* pDC)
{VARIANT var;CString strText = _T("");//初始化VARIANT类型变量VariantInit(&var);//给VARIANT类型变量赋值var.vt = VT_I4;var.lVal = (long)100;strText.Format(_T("var = %d"), var.lVal);pDC->TextOut(100, 50, strText);//清除VARIANT类型变量VariantClear(&var);//给VARIANT类型变量赋值var.vt = VT_R4;var.fltVal = 1.23f;strText.Format(_T("var = %f"), var.fltVal);pDC->TextOut(100, 100, strText);//改变VARIANT类型变量数据类型VariantChangeType(&var, &var, 0, VT_R8);strText.Format(_T("var = %f"), var.dblVal);pDC->TextOut(100, 150, strText);
}
16.15 如何将BYTE转换成KB、MB和GB
void CDemoDlg::OnTest()
{int nNum1 = GetDlgItemInt(IDC_NUM1);CString strNum2 = _T("");//转换成GBif (nNum1 > GB){strNum2.Format(_T("%0.2fGB"), (double)nNum1 / GB);}//转换成MBelse if (nNum1 > MB){strNum2.Format(_T("%0.2fMB"), (double)nNum1 / MB);}//转换成KBelse if (nNum1 > KB){int n = nNum1 / KB;strNum2.Format(_T("%0.2fKB"), (double)nNum1 / KB);}else{strNum2.Format(_T("%dByte"), nNum1);}SetDlgItemText(IDC_NUM2, strNum2);
}