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

使用 GetDesktopWindow() 作为 hWndParent 参数。它适用于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 回答