自己Try出來可以這樣轉換,也沒這樣寫過(pszBuf + i)[0]這類的用法,
紀錄一下;以免忘記,
此代碼可直接傳WCHAR* 的值測就會用了。
void ChangeWByte(WCHAR *pszBuf)
{
WCHAR *pszChar;
pszChar = _T(" ");
int nLength = wcslen(pszBuf);
for(int i = 0; i < nLength; i++)
{
// (pszBuf + i)該位置取2 bytes的字
// 去找是不是空白 -> 0x20 0x00
if((pszBuf + i)[0] == pszChar[0])
{
//可以這樣強制轉換WCHAR* -> BYTE*
// 變成一次取代一個BYTE的HEX值。
memset((BYTE*)(pszBuf+ i), 0x21, 1);
//亦可以強制轉換,直接給值。
//但[索引值] 需要當作轉換後的BYTE的索引值,故i要乘2.
((BYTE*)pszBuf)[(i*2)+1] = (BYTE)0x07;
}
}
//最後把值利用Format給CString變數,
//傳進來的pszBuf其實已經被改變。 主要是有需要可以給其他成員變數。
//另註解有CString轉WCHAR的方法。
//先強制轉換CString -> LPCTSTR 才能在強制轉換成 WCHAR*
// CString strBuffer;
// WCHAR *pszBuf ;
// pszBuf = (WCHAR*)(LPCTSTR)strBuffer;
CString strDest;
strDest.Format( _T("%s"), pszBuf);
}
沒有留言:
張貼留言