3

現在、Win32 アプリケーションで編集コントロール ( http://msdn.microsoft.com/en-us/library/windows/desktop/bb775458(v=vs.85).aspx )を作成しようとしていますが、残念ながらできません。垂直スクロール バーが使用されていないときは非表示になります。

私は現在このスタイルを使用しています:

WS_CHILD | ES_MULTILINE | ES_WANTRETURN | WS_VISIBLE | WS_VSCROLL | ES_AUTOVSCROLL

これによりスクロール バーが表示されますが、必要がない場合でも永続的に表示されます。理想的には、必要のないときはこのバーを非表示にしたい (つまり、テキストがコントロールに収まるとき)

不足しているスタイルはありますか、それとも Scrolls を使用して別のコントロールを作成し、そこに EDIT を埋め込む必要がありますか?

前もってありがとう、マット

4

3 に答える 3

2

Win32 での短い答えは、スタイルの変更だけでは不可能です。

MFC でも統合されていません。これは、表示および非表示のスクロールバーがクライアントの四角形を変更し、スクロールバーを表示/非表示にするタイミングを検出するためにコンテンツ サイズを計算する必要があるためです。(MFC http://www.codeguru.com/cpp/controls/editctrl/article.php/c3917/Multiline-Edit-Box-with-Automatic-Scroll-Bar-Display.htmでそれを行う方法の codeguru へのリンク)

スクロールバーの表示と非表示がどうしても必要な場合は、コードでそれを行うしかありません。スクロールが必要かどうか、およびそれらを表示する必要があるかどうかを計算するには、ペイントをオーバーロードする必要があります。個人的には、この種の作業では通常、編集でスクロールバーを非表示にし、配置、初期化、およびすべてを自分で行う 2 つのスクロールバー コントロールを作成します。これは何行ものコードなので、開始する前に本当に必要かどうかを確認してください。

于 2013-08-09T10:55:40.517 に答える