2014-10-30 102 views
0

我在我的項目中創建了多個選項卡,並且當我使用'&'字符時,它不會顯示它應該顯示的內容。 例如:C++ - 製表符控制 - &字符

「選項卡& 1」 - >號加下劃線

所以我想,我可以用:

「選項卡& & 1」 - >和導致「標籤& 1」

我可以手動添加額外的'&',但我不知道是否還有更多的字符不能直接工作。 我沒有在我的項目中找到任何參考,我的項目中的選項卡名稱不是靜態的。

這是我在做WM_CREATE:

RECT rcClient; 
GetClientRect(hwnd, &rcClient); 
TabControl = CreateWindow(WC_TABCONTROL, "", WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE,0, 0, rcClient.right, rcClient.bottom, hwnd, (HMENU)0, GetModuleHandle(NULL), NULL); 

TCITEM tie; 
tie.mask = TCIF_TEXT; 
tie.pszText = "Tab &&1"; 
TabCtrl_InsertItem(TabControl, 0, &tie); 
+0

包括你的main()代碼,所以我們可以看到你嘗試使用它的上下文。我們會更好地瞭解你在做什麼。 – 2014-10-30 21:30:50

+2

C++沒有標準的「tabcontrol」。所以你將不得不解釋你正在使用的庫。 – 2014-10-30 21:40:38

+0

除非您的庫有辦法關閉自動加速鍵,否則只需設置選項卡名稱即可動態替換。 – Cameron 2014-10-30 21:43:42

回答

3

好,Unicode是特殊字符山上,有一些有趣的谷歌搜索 「zalgo」。

但是,&角色的行爲,以及那個特定的角色,在DrawTextEx() winapi函數中被定位爲特殊角色。請注意DT_HIDEPREFIX選項,明確專用於控制包含&字形的字符串的行爲。如果你不得不自己動手,那麼準確地強調單個角色是非常困難的。

除了zalgo,沒有太多值得擔心的事情。控制字符可以有點片狀,如「\ t」和「\ n」,你從來沒有真正使用過它們。最重要的是,如果出現意外,那麼你會很快看到它:)

+0

謝謝!我製作了一個小功能,增加了額外的&。 – Dan 2014-10-30 22:25:56