6

私がする時

wnd = CreateWindow("EDIT", 0,
    WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | 
    ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN,
    x, y, w, h,
    parentWnd,
    NULL, NULL, NULL);

すべて問題ありませんが、WS_VSCROLL と WS_HSCROLL を削除してから以下を実行すると、それらが取得されないため、ウィンドウが正しくありません。なんで?間違ったウィンドウが表示されるだけでなく、WS_VSCROLL と WS_HSCROLL の両方が欠落している場合は使用できません。

style = WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE |
    ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN;
SetWindowLong(wnd, GWL_STYLE, style);
4

2 に答える 2

9

一部のコントロールスタイルは、ウィンドウの作成後に変更できません。ES_AUTOHSCROLLスタイル(基本的にワードラップを制御する)はその1つです。これは、 Edit Control StylesのMSDNセクションで(やや間接的に)述べられています。SetWindowLong()を使用してビットを設定できますが、コントロールはそれらを無視するか、不規則に動作します。

これをきれいに行う唯一の方法は、必要なスタイルを使用して編集コントロールを再作成することです。これは、実際には「ワードラップ」設定を切り替えたときにメモ帳が行うことです。

于 2008-11-12T23:13:33.963 に答える
3

ShowScrollBar() 関数でそれを行うことができます。ウィンドウのスクロールバーを有効/無効にしたい場合は、EnableScrollBar() 関数も興味深いかもしれません。よろしくお願いします。

于 2011-03-18T23:28:39.230 に答える