繁体   English   中英

C ++ Winapi HWND按名称获取元素

[英]C++ Winapi HWND Get element by Name

有什么办法可以通过属性“名称”获得HWND吗? 我知道每个IDE都有HWND元素自己的属性,但是这些属性都应用于HWND。

我不在Visual Studio中工作,这只是一个例子。 我想在没有VS库的C ++中按名称获取HWND。

例如:

HWND button = GetHwndByName("button1"); //Example

属性“名称”为button1 在此处输入图片说明

属性“名称”为:button1

我假设您正在尝试通过代码或其他程序的GUI控件访问GUI控件。

正如某些人所提到的,属性编辑器中的(name)属性只是用于该控件的变量名称。 屏幕快照显示了Visual Studio编辑.net程序。 对于.net, (name)字段是表示控件的窗口类的类成员的名称。 因此,如果(name)button1则Visual Studio可能会生成如下代码

// pseudo-C++/C#-like
class Form1 : public System.Windows.Forms.Form {
private:
    System.Windows.Forms.Button *button1;
...
};

这里的想法是将事件处理程序作为Form1类的一部分:

void Form1::onButton1Clicked(void)
{
    this->button1->SetText("You clicked me!");
}

因此,从Windows的角度来看, (name) 不是窗口的固有属性。

我不知道CA Plex的GUI编辑器是什么样的,但是假设您说您正在使用C ++,我可以假设它要么

a)产生一个类似于我上面粘贴的类,在这种情况下,您将直接使用(name)作为成员,或者

b)产生一个头文件,其中每个控件名称均作为全局HWND变量

无论哪种方式,您都可以直接在代码中直接使用它们。 也许有类似的东西

void doToAllButtons(void (*f)(HWND, LPARAM), LPARAM lParam)
{
    (*f)(button1, lParam);
    (*f)(button2, lParam);
    (*f)(button3, lParam);
}

并编写一个适当的函数以通过此函数进行调用。

如果您需要与另一个程序进行接口并希望使用其变量名,那么您就不走运了。 您需要以其他方式找到想要的窗口,例如使用FindWindow()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM