c++ - 上下控件不显示其在伙伴窗口中的位置

标签 c++ winapi updown

我创建了一个up-down control通过以下代码。

HWND hEdit, hUpDown;

hEdit = CreateWindowExW(WS_EX_CLIENTEDGE,
                        L"EDIT",
                        Content.c_str(),
                        ES_LEFT | WS_VISIBLE | WS_CHILD,
                        600,
                        260,
                        100,
                        25,
                        hWndParent,
                        NULL,
                        hInstance,
                        NULL);

INITCOMMONCONTROLSEX iccx;
iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
iccx.dwICC  = ICC_UPDOWN_CLASS;
InitCommonControlsEx(&iccx);

hUpDown = CreateWindowExW(  0,
                            UPDOWN_CLASSW,
                            L"",
                            UDS_ARROWKEYS | UDS_ALIGNRIGHT | WS_VISIBLE | WS_CHILD,
                            0,
                            0,
                            0,
                            0,
                            hWndParent,
                            NULL,
                            hInstance,
                            NULL);

SendMessageW(hUpDown, UDM_SETBUDDY,   (WPARAM) hEdit, (LPARAM) NULL);
SendMessageW(hUpDown, UDM_SETRANGE32, (WPARAM) 0,     (LPARAM) 100);
Sleep(5000);
SendMessageW(hUpDown, UDM_SETPOS32,   (WPARAM) NULL,  (LPARAM) 20);
Sleep(5000);
SendMessageW(hUpDown, UDM_SETPOS32,   (WPARAM) NULL,  (LPARAM) 60);

我检查了 SendMessageW() 函数的返回值。它们通过返回先前的位置值 as documented 成功终止。 .

创建的上下控件看起来正常:
the created up-down control

问题是,发送UDM_SETPOS32消息,点击上下箭头和按键盘上的上下键都没有效果。如果不直接在其中键入内容,我无法更改编辑控件(上下控件的好友窗口)的内容。它只是保持空状态。

我可以使用键盘手动输入任何内容:
example text input

如何通过按键盘箭头键、单击 GUI 中的箭头以及在代码中发送 UDM_SETPOS32 来更改此上下控件的位置/值?我的代码中缺少什么?

最佳答案

在创建上下控件时使用样式UDS_SETBUDDYINT

来自MSDN documentation :

UDS_SETBUDDYINT
Causes the up-down control to set the text of the buddy window (using the WM_SETTEXT message) when the position changes. The text consists of the position formatted as a decimal or hexadecimal string.

通过添加 UDS_SETBUDDYINT 样式来更改上下控件的创建代码:

hUpDown = CreateWindowExW(  0,
                            UPDOWN_CLASSW,
                            L"",
                            UDS_SETBUDDYINT | UDS_ARROWKEYS | UDS_ALIGNRIGHT | WS_VISIBLE | WS_CHILD,
                            0,
                            0,
                            0,
                            0,
                            hWndParent,
                            NULL,
                            hInstance,
                            NULL);

关于c++ - 上下控件不显示其在伙伴窗口中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17992317/

相关文章:

android - Android 中 Webview 的上下滑动动画

android - 如何禁用应用程序的音量

delphi - 重新创建关联时保持UpDown-Associate连接

c++ - 如何理解宏定义

C++ : get inherited type from abstract pointer vector

c++ - 静态函数可以在 C++ 中是虚拟的吗?

java - 如何检查是否有默认打印机 (Windows)?

c++类输出不完全显示

winapi - 在C++、WinAPI中如何知道进程是否在Windows中运行?

c - 如何在 Linux 中创建具有特定安全权限的文件? (即相当于 Win32 CreateFile+SECURITY_ATTRIBUTES)