Windows 7的编辑控件,垂直滚动不起作用(Windows 7 edit control, ve

2019-09-29 03:04发布

我已经编译好的(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);

Answer 1:

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



Answer 2:

需要注意的是垂直滚动条甚至作出单行编辑控制感。 在这种情况下,WM_VSCROLL必须设置,并ES_AUTOVSCROLL没有。 (EM_AUTOVSCROLL装置EM_AutoHIDEVScroll。)替代UpDown控件使得更多的编程efford比捕获VM_VSROLL消息,然后改变所述编辑控制内部的(通常为数字)值。

然而好景不长,在MS Visual Studio中内置的资源编辑器不会让你添加WM_VSROLL到单行编辑! 你必须通过编辑在文本模式下的.RC文件中添加该位做到这一点。 类似的事实,这个资源编辑器不会让你添加一个默认文本的控制,这仍然是由资源加载器的支持。



Answer 3:

使用GetDesktopWindow()作为hWndParent参数。 它的工作原理上的Win7。



文章来源: Windows 7 edit control, vertical scroll does not work