VC中前綴字符&帶來(lái)的UI顯示問(wèn)題
早期整理資料的上傳,解決問(wèn)題中有查找和參考相關(guān)資料,內(nèi)容以自己測(cè)試和處理過(guò)程整理為主。
問(wèn)題現(xiàn)象
VC的界面上如果通過(guò)靜態(tài)文本框?qū)傩燥@示一個(gè)包含多個(gè)&&的字符串,或者通過(guò)DrawText接口顯示包含多個(gè)&&的字符串。默認(rèn)情況下,一個(gè)&不會(huì)顯示,兩個(gè)&會(huì)顯示為一個(gè)&,帶來(lái)界面顯示問(wèn)題。
問(wèn)題原因
這是因?yàn)閂C的界面類控件中對(duì)文字有一些前綴相關(guān)屬性,默認(rèn)會(huì)將&當(dāng)作前綴符號(hào)解釋處理,根據(jù)控件屬性中對(duì)前綴的不同處理來(lái)顯示前綴附件的字符。
解決方法
配置控件屬性中關(guān)閉前綴識(shí)別屬性。
代碼樣例
void?OnPaint(){ CPaintDC?dc(this);?//?device?context?for?painting int?x?=?100; ? CRect?rectText1(x?+?50,?50,?x?+?200,??70); CRect?rectText2(x?+?50,?70,?x?+?200,??100); CString?strTest1("1111111&&2222222"); std::wstring?strTest2(L"666666&&2222222"); //dc.DrawText(strTest1,?rectText1,?DT_NOCLIP|DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_WORD_ELLIPSIS); //dc.DrawText(strTest2.c_str(),?rectText2,?DT_NOCLIP|DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_WORD_ELLIPSIS); dc.DrawText(strTest1,?rectText1,?DT_LEFT?|?DT_NOPREFIX); dc.DrawText(strTest2.c_str(),?rectText2,?DT_LEFT); dc.TextOutW(x?+?50,??100,?strTest1); dc.TextOutW(x?+?50,??120,?strTest2.c_str()); ? CDialog::OnPaint();}
靜態(tài)文本框的屬性調(diào)整:
DrawText處理效果:
相關(guān)資料及說(shuō)明
該函數(shù)在指定的矩形里寫入格式化的正文,根據(jù)指定的方法對(duì)正文格式化(擴(kuò)展的制表符,字符對(duì)齊、折行等)。
通常DrawText解釋助記前綴字符,&為給其后的字符加下劃線,解釋&&為顯示單個(gè)&。指定DT_NOPREFIX,這種處理被關(guān)閉。
中文說(shuō)明?http://blog.csdn.net/lishuhuakai/article/details/18322459
官方文檔:https://msdn.microsoft.com/en-us/library/windows/desktop/dd162499(v=vs.85).aspx
Ignores?the?ampersand?(&)?prefix?character?in?the?text.?The?letter?that?follows?will?not?be?underlined,?but?other?mnemonic-prefix?characters?are?still?processed. Example: input?string:?"A&bc&&d" normal:?"Abc&d" DT_HIDEPREFIX:?"Abc&d" DT_NOPREFIX:?"A&bc&&d" PREFIXONLY:?"?_?" Compare?with?DT_NOPREFIX?and?DT_PREFIXONLY.
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。