我正在CodeBlocks中使用wxSmith学习C ++。
我用两个框架构建了一个应用程序,我需要在顶层窗口中访问变量。
void test12052019Frame::OnButton1Click(wxCommandEvent& event)
{
wxString test1 = "";
wxString test2 = "";
test1 = TextCtrl1->GetValue();
test2 = TextCtrl2->GetValue();
// compare/parse userid/password
// Access ERP system and get credential schema
// build the treeview
if(test1 == "titou" && test2 == "123123"){
// todo auth. against Mysql
wxMessageBox("You're in !!\n");
TreeCtrl1->Show();
TreeCtrl1->ExpandAll();
}else
wxMessageBox("You're out !!\nWrong userid/password");
}
void test12052019Frame::OnTreeCtrl1ItemActivated(wxTreeEvent& event)
{
//TreeCtrl1 is my tree
//when I click on any option of my tree
//it activate a wxMessageBox with the label
//of the option selected...
//just let go your imagination :)
NewFrameActivities *mynewwindow = new NewFrameActivities(this);
wxString thelabel;
wxTreeItemId test3;
test3 = TreeCtrl1->GetSelection();
thelabel = TreeCtrl1->GetItemText(test3);
wxMessageBox(thelabel);
mynewwindow->SetLabel(thelabel);
//mynewwindow->StaticBox1->SetLabel(tosomething...);
//I have a textctrl in this event (textctrl1) and
//textctrl(textctrl1) in another event
mynewwindow->TextCtrl1->ChangeValue("thetest\nsetvalue\n");
mynewwindow->Show(TRUE);
}
我需要从第一个活动中知道用户名 (顶级窗口,textctrl1) Visual demo
答案 0 :(得分:0)
在框架类声明中命名控件:
class MyFrame : public wxFrame
{
.... ctors, etc
wxTextCtrl *texctrl_user;
wxTextCtrl *texctrl_pass;
wxButton *button1;
//Function for button handling
void OnButton1Click(wxCommandEvent& event);
....
};
在MyFrame ctor或类似位置创建控件
texctrl_user = new wxTextCtrl(....);
texctrl_pass = new wxTextCtrl(....);
button1 = new wxButton(.......);
并绑定按钮单击处理程序:
button1 ->Bind(wxEVT_BUTTON, &MyFrame::OnButton1Click, this, button1->GetId());
现在,由于函数和是文本类的成员,因此可以从类内部进行访问:
void MyFrame::OnButton1Click(wxCommandEvent& event)
{
wxString str_user = texctrl_user->GetValue();
wxString str_pass = texctrl_pass->GetValue();
...
}
答案 1 :(得分:0)
@smarch,
在主框架中执行以下操作:
void MainFrame :: AskForCredentials() { MyCredentialsDialog dlg; int结果= dlg.ShowModal(); if(结果== wxID_OK) { wxString userID = dlg.GetUserIDCtrl()-> GetValue(); wxString pass = dlg.GetPasswordCtrl()-> GetValue(); } }
测试 5.享受。