具體問題代碼如下:
SelectObject(ADC,(HBRUSH)GetStockObject(GRAY_BRUSH));//選擇一個設備畫刷
Ellipse(ADC,0,0,100,100);//畫個圓
SetBkColor(ADC, RGB(0, 255, 0)); //按鈕上文字的背景顏色
SetTextColor(ADC, RGB(255, 0, 0)); //按鈕上的文字顏色
TextOut(ADC,25, 50, L"12345", sizeof("12345"));//按鈕上的文字
運行之后的效果如下:

后面會有一些奇怪的字符,這個怎么破?有沒有大蝦來拯救我這只小蝦米。感激不盡......
uj5u.com熱心網友回復:
花了點時間 問題解決了,修改代碼為SelectObject(ADC,(HBRUSH)GetStockObject(GRAY_BRUSH));//DCBAK
Ellipse(ADC,0,0,100,100);
SetBkColor(ADC, RGB(0, 255, 0)); //按鈕上文字的背景顏色
SetTextColor(ADC, RGB(255, 0, 0)); //按鈕上的文字顏色
WCHAR str[50];
swprintf_s(str,L"12345",20);
TextOut(ADC,25, 50, str, wcslen(str));//按鈕上的文字
成功解決問題,貌似是字體解碼的問題,之前sizeof導致不能正常結束解碼程序,然后越界去相鄰的儲存空間里面繼續解碼。
uj5u.com熱心網友回復:
用帶 t 的函式,可適應Unicode和多位元組編譯環境_stprintf_s, _tcslen _tcscpy_s, _tcscat_s _tcscmp 等
LPCTSTR str = _T("12345");
TextOut(hDC, x, y, str, _tcslen(str));
uj5u.com熱心網友回復:
L"12345", sizeof("12345")有L 與 無 L不匹配
uj5u.com熱心網友回復:
建議樓主親自打開tchar.h一眼。uj5u.com熱心網友回復:
sizeof("12345") sizeof 改_tcsclenuj5u.com熱心網友回復:
_T("") 多嘗試問題就可以解決uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
用 sizeof("12345") 肯定不對,結果是 6,對于 L"12345" 來講,只有 5 個字符。uj5u.com熱心網友回復:
sizeof 回傳的是空間占的記憶體,那么你字串還有個結尾空,或者wchar的結尾,或者編譯器設定的字串結尾符strlen
wcslen
uj5u.com熱心網友回復:
學習學習。。。uj5u.com熱心網友回復:
估計你用的是Unicode版本的,傳給TextOut函式的應該是字符個數,不是sizeof獲取的位元組數轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/85588.html
標籤:界面
上一篇:duilib表單陰影
下一篇:對話框如何實作QQ截圖功能
