我已经转录了一个c++控制台应用到图形用户界面使用wxWidgets。我的大部分函数都是为命令行流编写的。我正在创建句柄和额外的代码,以使GUI与函数交互。我已经为输出流模拟了一个控制台,它工作得很好(使用wxStreamToTextRedirector)。但是,我无法找到一个简单的解决方案来从文本控件获取用户输入,并在下面的代码中替换std::cin命令。我的框架的事件处理程序和GUI控件在MainFrame.cpp中,对象数据和函数在另一个Data.cpp中。
我在Data.cpp中有一个函数,它将在MainFrame.cpp的按钮按下事件上调用:
bool Data::run_yn_prompt()
{ //Run Y or N input prompt
do {
std::string input = "";
std::cout << "\n Input Y/y to proceed, N/n to cancel:"; **//OUTPUT TO DISPLAY CONSOLE**
std::getline(std::cin, input); **//Need to fetch wxTextCtrl input at this point only**
std::cout << input;
if ( (input=="Y") || (input=="y") ) return true;
if ( (input=="N") || (input=="n") ) return false;
} while(1==1);
}
问题是我只需要在:之后获取输入
运行前一个std::cout,用户输入输入并按ENTER (由wxEVT_TEXT_ENTER事件处理程序发出信号)
我想我能做到的唯一方法是添加大量的条件和布尔标志来监视用户的输入和输入按下。有什么简单的策略可以让这件事成功吗?我的目标不是发布这个应用程序,而是学习如何让wxWidgets元素根据我的需要工作。我的代码中有这么多std::cin,如下所示。这个问题阻止了我继续使用wxWidgets。我想把所有的东西都放在一个单独的框架里,而不需要额外的对话框。
发布于 2020-12-14 14:31:42
在GUI程序中使用std::cin
保存代码的唯一方法是使用模态对话框来输入文本(例如,wxGetTextFromUser()
)。对于用户来说,这并不像在主程序窗口中使用文本控件那样方便,但这是保持现有控制流的唯一方法。
https://stackoverflow.com/questions/65286646
复制相似问题