C++上下控制伙伴如何设置值而不是WM_SETTEXT
C++ UpDown Control buddy how to set Value instead of WM_SETTEXT
我对Updown控件有几个小问题
这是使用VS2015和C++,WinApi没有MFC
- 我似乎只能设置Updown控件的文本 用
SendMessage(hwndUpDnEdtBdy, WM_SETTEXT, (WPARAM)1, (LPARAM)(std::to_string(number).c_str()));
这导致的问题是,当控件处于值(如 10)时,我将文本设置为特定数字(如 100)。下次我单击上下控件的 +- 时,它会更改为最后一个数值的 +-1,即 10。
如何设置上下控件的值而不是文本?
为了回答为什么我需要这样做:我有第二个控制器,跟踪栏,它与上下控制同时工作。
- 当我在上面的函数中使用WM_SETTEXT时,我无法设置负数,当我输入
-
时,它会自动在 - 和数字之间创建一个新行。我必须将文本设置为"n10"之类的内容才能将其设置为"-10",这对用户界面不利。
是的,我已经在UpDown控制伙伴上启用了ES_MULTILINE。我需要这个,这样我就可以检测到输入号码后按下了 Enter
HWND control = GetFocus();
switch (message)
{
case WM_COMMAND:
if (HIWORD(wParam) == EN_UPDATE && control == hwndUpDnEdtBdy)
{
char txt[6];
GetWindowText(hwndUpDnEdtBdy, txt, sizeof(txt));
if (CheckEnter(txt, sizeof(txt)))
{
//...Do Operation Here
}
}
}
...
bool CheckEnter(char* text, int length)
{
for (int i = 0; i < length; i++)
if (text[i] == 'r')
return true;
return false;
}
是的,我尝试使用IDOK,但它不起作用, 我的控件类也是子类化的。
如何设置上下控件的值而不是文本?
向其发送UDM_SETPOS
或UDM_SETPOS32
消息。 该值必须在先前的UDM_SETRANGE
或UDM_SETRANGE32
消息设置的范围内。
我已经在Updown控制伙伴上启用了ES_MULTILINE。我需要这个,这样我就可以检测到输入号码后按下了 Enter
你不需要ES_MULTILINE
。 单行编辑控件可以很好地检测Enter。 只需对编辑控件进行子类化即可截获WM_CHAR
消息。 它的wParam
将是13('r'
)的输入印刷机。
相关文章:
- "WM" C++是什么意思?
- Qt 5 应用程序崩溃并出现"qLineEdit::setText"
- QT 标签 setText() 同时保留文本格式
- 什么是窗口最大化/最小化/恢复的WM Windows消息
- 请求X11在C或C++中合成WM的图像
- 没有这样的槽QLineEdit::setText
- Qt-setText()加载程序
- 问题:太多的setText调用会导致滞后
- 将 setText 和 setNum 合并到 Qt 中的标签中
- 100% CPU 利用率在 gettimeofday、QTime 或 QLabel->setText
- setInformativeText 和 setText 在功能上有什么区别?
- 如果在WM/CE平台中用于卸载,DMProcessConfigXML将关闭正在运行的应用程序
- QLineEdit 在 Qt 中调用 SetText() 后无法撤消
- 想要在setTimer和setText中添加按钮
- 使用Qt中的setText将portname写入标签
- 使用 QImage::setText() 将二进制数据存储在 PNG 文件中