【问题标题】:win32 console - form example!win32 控制台 - 表单示例!
【发布时间】:2010-05-30 02:36:57
【问题描述】:

我正在尝试在 c++ win32 控制台应用程序中构建一个简单的表单。 而不是使用 cin 并不断提示用户输入详细信息,我想显示表单标签,然后使用 tab 键,允许用户通过 tab 键。

不使用 ncurses 的最简单方法是什么?

我只需要一次完成以下操作:

Name:
Username:
Email:

将光标位置设置在名称字段旁边,然后每次点击tab时,我都会将光标设置在下一个位置,然后将cin设置为下一个变量 例如。 启动时

gotoxy(nameX, nameY);
cin >> name;

点击 Tab/回车

gotoxy(usernameX, usernameY);
cin >> username;

点击 Tab/回车

gotoxy(emailX, emailY);
cin >> email;

这真的可行吗?

我尝试了带有 GetAsyncKeyState 和键盘事件的 while 循环,但 cin 在该循环中无法正常工作。

有没有关于超级简单表格的好例子,或者这样做的参考? 我知道如何 SetConsoleCursorPosition,但是如何在仍然能够捕获 cin 的同时实现 tabbing?

谢谢

【问题讨论】:

  • 这是一个需要成为win32控制台应用程序的Uni项目,他们想在这里看到cout、cin和一大堆iostream函数的用法。这就是我没有使用 ncurses 的原因,因为它控制了屏幕,我将无法使用 cout、cin 等。

标签: c++


【解决方案1】:

最简单的方法是什么 这个,不用ncurses?

到目前为止,使用 ncurses(或等效库)是简单的方法。

您似乎忘记了 tab 在逐行阅读时只是另一个字符(如cin>>name;)。为了模拟 ncurses,你的程序需要处理多类击键(退格键、制表符、箭头、字符、数字,甚至功能键等),做任何适当的事情,正确地保持状态屏幕的位置和光标的位置——所有这些都是为了从用户那里读取三个文本字段。

考虑花几个小时仔细阅读source code,即使您不使用它,您也可能学到很多东西(这是一个严肃的建议,顺便说一句)。

【讨论】:

  • 感谢 NVRam,至少现在我知道不使用 ncurses 就不会死去。如果 ncurses 是解决方案,那么我认为 Uni 不希望我们使用它。所以回到狡猾的提示和用户体验。 Ncurses 很棒,我之前在研究 TUI 库时已经实现了。再次感谢,您的回答结束了。
猜你喜欢
  • 2012-08-22
  • 1970-01-01
  • 2011-06-11
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多