我有以下wxDialog
父窗口:
我已通过以下代码创建了该父窗口:
settingsFrm settingsWindow(this, "Settings");
settingsWindow.ShowModal();
我尝试使用FindWindowByName
获取第一个文本ctrl的值,如下所示:
wxLogMessage(dynamic_cast<wxTextCtrl*>(settingsWindow->FindWindowByName("keywords_txt"))->GetValue());
但不幸的是,它不起作用并且给我一个运行时错误。 我不知道这种方法是否适合做我想做的事。
如何通过父窗口获取控件的值/其他?
答案 0 :(得分:0)
从您的评论中,您似乎希望函数从代码中的变量名称中找到控件,而不是它的工作方式,而且几乎不可能。
FindWindowByName()
使用窗口名称(并且,作为后备,标签,但这在此无关紧要,因为文本控件无论如何都没有标签),所以为了让你工作需要在创建控件时使用其ctor的相应参数设置窗口名称。然而,这在C ++代码中很少有用,因为在一些变量中只存储一个指向控件的指针并使用它更简单。
FindWindowByName()
通常很有用。如果这样做,那么您应该在XRC中为控件指定名称,并将相同的名称传递给此函数。
答案 1 :(得分:0)
你是如何创建TextCtrl实例的?您应该拥有类似wxTextCtrl m_textCtrl1 = new wxTextCtrl(/// arguments);
的内容。访问该值应该非常简单,因为wxString text = m_textCtrl1->GetValue();
您绝对不需要FindWindowByName
只是为了您在这里尝试做的事情。