使用单个sendmessage选择组合框项
ComboBox item selection with a single sendmessage
通过代码,我从另一个进程对话框中选择组合框项
这是已经尝试过的2条路由
// selecting using item text
void setComboBox(HWND hDlg, const char* value, int ctrlId) {
SendDlgItemMessageA(hDlg, ctrlId, CB_SELECTSTRING, -1, (LPARAM) value);
SendMessageA(hDlg, WM_COMMAND, MAKEWPARAM(ctrlId,CBN_SELCHANGE),
(LPARAM) GetDlgItem(hDlg, ctrlId));
}
// selecting using item index
void setComboBox(HWND hDlg, int i, int ctrlId) {
SendDlgItemMessageA(hDlg, ctrlId, CB_SETCURSEL, i, 0);
SendMessageA(hDlg, WM_COMMAND, MAKEWPARAM(ctrlId,CBN_SELCHANGE),
(LPARAM) GetDlgItem(hDlg, ctrlId));
}
所以我看到的是在这两个方法中,我需要发送第二个消息(WM_COMMAND),这增加了延迟。
No。根据设计,通过代码更改选择不会触发CBN_SELCHANGE
。文档明确地说明了这一点:
当使用CB_SETCURSEL消息设置当前选择时,不发送CBN_SELCHANGE通知代码。
只有用户操作触发CBN_SELCHANGE
,所以你必须手动发送。
相关文章:
- 组合框第一行不可选择
- 组合框选择加载以前的选择
- 如果我们从每个 Y 向量中选择一个值,则 X 数字的每个组合都可能
- 选择和 UDP 协议组合时无法接收数据
- 选择元素的所有组合
- 如何使用递归从集合中选择所有可能的元素组合
- 在win API中带有图像和整行选择的组合框
- Qt C++根据组合框中的选择创建一个对象
- 当我在C++中从组合框中选择行时,如何调用函数
- 函数从c++中的字符串中选择字符组合
- Qt 组合框:选择项目时的事件
- 在组合框选择上更改日期时间选取器样式失败
- 我想为每个组合框选择分配整数值,并将它们集中打印到文本文件中
- 是否可以使用C++对象组合,其中对象的选择是在运行时确定的
- 从一个组合框中选择项目,然后从其他组合框中删除该项目
- 根据组合框中的选定项目选择算法
- 基于QTCreator中的组合框选择修改样式表
- QInputDialog操作取决于组合框中的项目选择
- 当从表视图中选择一行时,为组合框指定一个int值
- 检查选择的组合框项- WinApi c++