1

正常にコンパイルされ (mingw) 正常に実行されるアプリケーションがありますが、作成された編集コントロールにはスクロール バーがありますが、垂直スクロール バーは何もしません。同じ実行可能ファイルが WinXP で正常に動作します。また、編集コントロールには垂直スクロール バーと水平スクロール バーの両方があり、水平スクロール バーは正常に機能しますが、垂直スクロール バーは機能しません。垂直スクロール バーは表示され、クリック可能ですが、何も起こりません...

次のコードは、編集コントロールを作成するときに使用されます。

HWND hwndEdit = CreateWindow(TEXT("EDIT"), TEXT("Edit control"),
    WS_OVERLAPPED | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_LEFT | ES_MULTILINE |
    ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_READONLY | WS_SIZEBOX,
    1000, 480, 400, 500, NULL, 0, GetModuleHandle(NULL), NULL);
SendMessage(hwndEdit, WM_SETTEXT, 0, (LPARAM) TEXT("")); 
SendMessage(hwndEdit, EM_LIMITTEXT, 0, 0);

次のコードは、編集コントロールにテキストを追加するために繰り返し使用されます。

char test[] = "test";
SendMessage(hWndDbg, EM_SETSEL, 0x7FFFFFFF, 0x7FFFFFFF); // Undo any selection and move to end.
SendMessage(hWndDbg, EM_REPLACESEL, 0, (LPARAM) temp);
4

3 に答える 3

0

hWndParent パラメータとして GetDesktopWindow() を使用します。Win7で動作します。

于 2012-09-24T19:03:16.847 に答える
0

垂直スクロール バーは、単一行の編集コントロールでも意味があることに注意してください。この場合、WM_VSCROLL を設定する必要があり、ES_AUTOVSCROLL は設定しないでください。(EM_AUTOVSCROLL は EM_AutoHIDEVScroll を意味します。) 別の UpDown コントロールを使用すると、VM_VSROLL メッセージをキャプチャしてからエディット コントロール内の値 (通常は数値) を変更するよりも、プログラミングの手間が省けます。

残念ながら、MS Visual Studio の組み込みのリソース エディターでは、単一行の編集に WM_VSROLL を追加することはできません。これを行うには、テキスト モードで .RC ファイルを編集してこのビットを追加する必要があります。このリソース エディターでコントロールに既定のテキストを追加できないのと同様に、リソース ローダーではまだサポートされています。

于 2012-08-01T07:37:06.133 に答える
0

最後に修正を見つけました。WinXP では、エディット コントロールに親ウィンドウを定義する必要はないようです。Win7 では、垂直スクロール バーが機能するために必要です。水平スクロール バーは、親ウィンドウが定義されていなくても Win7 で機能します。

于 2011-09-18T23:49:47.693 に答える