首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用wxWidgets: wxTextControl来模拟C++ std::cin和std::cin(getline)流的最小解决方案

使用wxWidgets: wxTextControl来模拟C++ std::cin和std::cin(getline)流的最小解决方案
EN

Stack Overflow用户
提问于 2020-12-14 09:38:02
回答 1查看 158关注 0票数 1

我已经转录了一个c++控制台应用到图形用户界面使用wxWidgets。我的大部分函数都是为命令行流编写的。我正在创建句柄和额外的代码,以使GUI与函数交互。我已经为输出流模拟了一个控制台,它工作得很好(使用wxStreamToTextRedirector)。但是,我无法找到一个简单的解决方案来从文本控件获取用户输入,并在下面的代码中替换std::cin命令。我的框架的事件处理程序和GUI控件在MainFrame.cpp中,对象数据和函数在另一个Data.cpp中。

我在Data.cpp中有一个函数,它将在MainFrame.cpp的按钮按下事件上调用:

代码语言:javascript
运行
复制
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。我想把所有的东西都放在一个单独的框架里,而不需要额外的对话框。

EN

回答 1

Stack Overflow用户

发布于 2020-12-14 14:31:42

在GUI程序中使用std::cin保存代码的唯一方法是使用模态对话框来输入文本(例如,wxGetTextFromUser())。对于用户来说,这并不像在主程序窗口中使用文本控件那样方便,但这是保持现有控制流的唯一方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65286646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档