我创建了一个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 成功终止。 .
创建的上下控件看起来正常:
问题是,发送UDM_SETPOS32
消息,点击上下箭头和按键盘上的上下键都没有效果。如果不直接在其中键入内容,我无法更改编辑控件(上下控件的好友窗口)的内容。它只是保持空状态。
我可以使用键盘手动输入任何内容:
如何通过按键盘箭头键、单击 GUI 中的箭头以及在代码中发送 UDM_SETPOS32
来更改此上下控件的位置/值?我的代码中缺少什么?
最佳答案
在创建上下控件时使用样式UDS_SETBUDDYINT
。
UDS_SETBUDDYINT
Causes the up-down control to set the text of the buddy window (using theWM_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/