用CString的Format方法函數
void CDemoView::OnDraw(CDC* pDC)
{
int a = 100;
double b = 1.23;
//將整型轉換成CString
CString str1 = _T("");
str1.Format(_T("%d"), a);
//將實型轉換成CString
CString 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);
}
atoi:Convert a string to integer.
參考:http://baike.baidu.com/view/653935.htmspa
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);
}
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);
}
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);
}
void CDemoView::OnDraw(CDC* pDC)
{
TCHAR sz[] = _T("Hello world!");
//調用ConvertStringToBSTR函數
BSTR bstr1 = _com_util::ConvertStringToBSTR(sz);
//使用_bstr_t
BSTR 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);
}
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);
}
SysAllocString和SysFreeString code
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);
}
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);
}
LOWORD和HIWORDorm
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);
}
LOBYTE和HIBYTE htm
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);
}
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);
}
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);
}
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);
}
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);
}
void CDemoDlg::OnTest()
{
int nNum1 = GetDlgItemInt(IDC_NUM1);
CString strNum2 = _T("");
//轉換成GB
if (nNum1 > GB)
{
strNum2.Format(_T("%0.2fGB"), (double)nNum1 / GB);
}
//轉換成MB
else if (nNum1 > MB)
{
strNum2.Format(_T("%0.2fMB"), (double)nNum1 / MB);
}
//轉換成KB
else 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);
}