2

ラベルの複数行に問題があります。

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」は大きすぎて 1 行で表示できないため、私の質問は次のとおりです。

ラベルを複数行に表示するにはどうすればよいですか?

編集: ES_MULTILINE と WM_CTLCOLORSTATIC を削除した後、単語が長すぎることがわかりました。しかし、どうすれば 1 つの長い単語を複数の行に表示できるのでしょうか?

4

3 に答える 3

5

エディット コントロール スタイル ( ES_MULTILINE) をスタティック コントロールで使用していますが、これはサポートするようには設計されていません。そのスタイルはおそらくSS_BLACKRECTまたはSS_GRAYRECTにマップされ、観察している動作を説明します。

SS_LEFT既に を指定しているため、目的を達成するために現在のコントロールにスタイルを追加する必要はありません。ドキュメントには次のように記載されています。

SS_LEFT

単純な四角形で、四角形内のテキストを左揃えにします。テキストは、表示される前にフォーマットされます。行末を超える単語は、次の左揃えの行の先頭に自動的に折り返されます。コントロールの幅より長い単語は切り捨てられます。

SS_LEFTNOWORDWRAPどちらのスタイルも指定していないためSS_*ELLIPSIS、テキストは単語の境界間で折り返す必要があります。

WM_CTLCOLORSTATIC メッセージをスタイルとしても使用していることに注意してください。これは、期待どおりには機能しません。コントロールのスタイルからその値を削除する必要があります。

于 2013-03-04T09:25:16.133 に答える
2

ES_MULTILINE は、ラベルではなく編集コントロールに適しています

MSDN :

複数行の編集コントロールを指定します。デフォルトは単一行編集コントロールです。

複数行エディット コントロールがダイアログ ボックスにある場合、Enter キーを押すと、既定のボタンがアクティブになります。

于 2013-03-04T09:26:06.250 に答える
1

複数行のエディット コントロールの代わりにエディット コントロールを使用しました。リソースファイルに次のプロパティを設定しました

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

于 2015-02-09T02:26:06.253 に答える