2013-03-04 21 views
2

我在與在標籤上多行的問題。C++的Win32多行靜態標籤

我使用ES_MULTILINE嘗試過,但每當我用我上標籤的位置的灰色/黑色矩形,沒有標籤的文本。

CreateWindowW(L"STATIC", selectedPatternProblem, WS_CHILD | WS_VISIBLE | SS_LEFT | ES_MULTILINE | WM_CTLCOLORSTATIC,500, 190, 380, 90,*hwnd, (HMENU) 1, NULL, NULL); 

當我添加WM_CTLCOLORSTATIC,矩形走了,但這樣是我的文字。 'selectedPatternProblem'太大而無法在一行上顯示,所以我的問題是:

如何在多行上顯示我的標籤?

編輯:刪除ES_MULTILINE和WM_CTLCOLORSTATIC後,我發現我的話太長了。但是現在我想知道如何在多行上顯示一個長單詞?

+1

回覆:您的編輯,據我所知,靜態控件不支持包時打破的話。你要麼必須實現自己的自定義控件,要麼使用自繪的靜態控件(並提供自己的繪圖例程)。 – 2013-03-04 09:40:19

回答

5

您正在使用一個靜態控制,這是不能支撐它的編輯控件樣式(ES_MULTILINE)。這大概風格映射到SS_BLACKRECTSS_GRAYRECT,這可以解釋你觀察到的行爲。

你不應該有任何樣式添加到您當前的控制,以達到你想要什麼,因爲你已經指定SS_LEFTdocumentation說:

SS_LEFT

簡單矩形並左對齊矩形中的文本。文本 在顯示之前被格式化。延伸過去的 的線端部的話會自動換到下一 左對齊行的開頭。長於控件 寬度的單詞被截斷。

既然你指定既不SS_LEFTNOWORDWRAP也沒有的SS_*ELLIPSIS樣式之一,案文應字邊界之間換行。

請注意,您也使用WM_CTLCOLORSTATIC消息作爲一種風格,它絕對不會像您期望的那樣工作。您應該從控件的樣式中刪除該值。

2

ES_MULTILINE適合於編輯控制不標籤

MSDN

表示一個多行編輯控件。默認值是單行編輯 控制。

當多行編輯控件位於對話框中時,按ENTER鍵的默認 響應是激活默認按鈕。

1

我使用的編輯控件作爲替代多行編輯控件。我曾在資源文件中設置以下屬性

EDITTEXT IDC_COMMENT,58,53,75,41,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER