日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

eVC++就是eVC++啊

發布時間:2025/3/16 c/c++ 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 eVC++就是eVC++啊 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在VC++6.0正常的一段代碼:

void?CMessageboxView::OnLButtonDown(UINT?nFlags,?CPoint?point)?
{
????MessageBox(
"LButtonDown");
????
//?TODO:?Add?your?message?handler?code?here?and/or?call?default
????CView::OnLButtonDown(nFlags,?point);
}

在eVC++4.0中編譯錯誤:
error?C2664:?'MessageBoxW'?:?cannot?convert?parameter?1?from?'char?[4]'?to?'const?unsigned?short?*'
????????Types?pointed?to?are?unrelated;?conversion?requires?reinterpret_cast,?C-style?cast?or?function-style?cast
Error?executing?cl.exe.

?于是進行顯式類型轉換,改為MessageBox((LPCTSTR)"LButtonDown");
成功地彈出了消息框,但是里面地文字是亂碼.但是這段代碼在VC++6.0中是完全正常的.
如圖:

于是改用如下代碼:
void?CMessageboxView::OnLButtonDown(UINT?nFlags,?CPoint?point)?
{
????CString?myStr
="LButtonDown";
????MessageBox((LPCTSTR)myStr);
????
//?TODO:?Add?your?message?handler?code?here?and/or?call?default
????CView::OnLButtonDown(nFlags,?point);
}
亂碼沒有了:


問了一下wangxz,他說應該用MessageBox(_T("LBUTTONDOWN"));?,即加入一個_T宏,用來把ANSI字符串轉換為 UniCode.因為Wince只支持UNICODE,因此調用API時要使用寬字符串。(LPCTSTR)"LBUTTONDOWN"中字符串本身仍然是ANSI字符串,前面加強制轉換并沒有解決問題。_T是在TCHAR.H中定義的一個宏,它會根據你編譯環境中UNICODE宏的設置來確定是將后面的字符串編譯成ANSI的還是UNICODE的
在VC下,由于PC上的Windows系統同時支持ANSI和UNICODE,所以可以用,但如果你在編譯環境中定義了UNICODE宏,也會出現問題。
而定義一個CString中間變量的辦法之所以可以用是因為CString重載了(LPCTSTR)這個強制轉換運算符,這樣就由CString完成了從ANSI字符串向UNICODE字符串的轉換。

轉載于:https://www.cnblogs.com/blaze/archive/2006/06/23/433846.html

總結

以上是生活随笔為你收集整理的eVC++就是eVC++啊的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。