Windows 7编辑控件,垂直滚动不起作用

时间:2011-08-24 06:39:53

标签: winapi windows-7 scroll editcontrol

我有一个编译ok(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);

3 个答案:

答案 0 :(得分:0)

终于找到了修复。在WinXP中,编辑控件似乎没有定义父窗口,在Win7中,垂直滚动条需要工作,即使没有定义父窗口,水平滚动条也能在Win7中工作。

答案 1 :(得分:0)

请注意,垂直滚动条甚至对单行编辑控件有意义。在这种情况下,必须设置WM_VSCROLL,而不设置ES_AUTOVSCROLL。 (EM_AUTOVSCROLL表示EM_AutoHIDEVScroll。)替代UpDown控件比捕获VM_VSROLL消息,然后更改编辑控件内的(通常是数字)值更多编程efford。

不幸的是,MS Visual Studio内置资源编辑器不允许您将WM_VSROLL添加到单行编辑中!您必须通过在文本模式下编辑.RC文件来添加此位来执行此操作。 类似于此资源编辑器不允许您向控件添加默认文本的事实,资源加载器仍然支持该文本。

答案 2 :(得分:0)

使用GetDesktopWindow()作为hWndParent参数。它适用于Win7。