WinApi如何获取窗体中活动元素的句柄
WinApi how to get the handle of the active element in a form
使用下面的代码部分,我可以获得打开的文件对话框的句柄。这很好。
HWND handleForWindow = FindWindow(NULL, "Open");
现在,我需要在同一对话框的文本框区域输入filepath + filename。为此,我需要得到TextBox的句柄。我一直在使用spy++,到目前为止它工作得很好。但是,它没有得到TextBox的句柄。spy++说这个类是"Edit",没有标题。
我用标题和类名尝试了以下和其他一些可能性,但没有运气。
HWND hwndTextBox = FindWindowEx(handleForWindow, 0, "Edit", "Caption");
实际上TextBox是ComboBox的一部分。如果我在这里加上"ComboBox",它就能很好地处理。但在这种情况下,如果我发送一条文本信息到盒子,它不会在那里放任何文本。
SendMessage(hwndTextBox, WM_SETTEXT, 0, (LPARAM)"AnyText");
由于这不起作用,我有一个想法,在窗口中获得当前活动元素,因为每当打开文本框时,它就会一直处于活动状态。但我找不到任何Api调用。有人能帮我一下吗?
谢谢。
您可以向ComboBox发送CB_GETCOMBOBOXINFO
消息以检索其编辑框的HWND
。
如果你试图与一个打开文件对话框从公共对话框库进行交互,你可以发送CDM_GETFOLDERPATH
和CDM_GETFILEPATH
消息到对话框本身,以获得其当前路径和文件名,和一个CDM_SETCONTROLTEXT
消息,以改变显示在对话框的cmb13
或edt1
字段的文件名(见资源管理器风格的控制标识符)。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 使用不带参数的函数访问结构元素
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- C++如何通过用户输入删除列表元素
- lower_bound()返回最后一个元素
- 基于多个条件处理地图中的所有元素
- 调整大小后指向元素值的指针unordered_map有效?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 使用函数"remove"删除重复元素
- 具有最大子序列大小的序列,每个元素都相同
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将元素添加到数组的线程安全函数?
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 我想访问std::unique_ptr中的一个特定元素
- 如何通过 getter 函数删除矢量的元素?
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 为什么存储在 STL 向量中的堆栈分配元素C++即使超出范围也仍然处于活动状态
- WinApi如何获取窗体中活动元素的句柄