Запрос пользователя с полем ввода? [С++]
моя цель-просто использовать всплывающее окно, чтобы попросить пользователя для входа. Я искал вокруг совсем немного, и почти все результаты говорят, что создание messageBox очень просто:
MessageBox (NULL, "Hello World" , "Hello", MB_OKCANCEL);
но создание всплывающего окна, которое принимает входные данные, является более сложным, и нет прямого способа сделать это. Все результаты, которые я смог найти в Google, были датированы где-то с 2001 по 2005 год. Думаю, я здесь спрашиваю, появилось ли в последнее время какое-то более прямое решение годы.
надеюсь, что-то хорошее и прямо вперед, как в Java:
int number = JOptionPane.showInputDialog ("Enter an integer");
Если это не так, Могу ли я получить краткое объяснение того, как это сделать?
Edit: Я ничего не мог заставить работать. : (Я закончил писать код для выполнения работы на Java, а затем написал одну строку кода C++ для вызова .файл jar. :- /Поскольку вопрос был чувствителен ко времени, это было лучше, чем ничего.
6 ответов
нет ничего подобного для чистого C++. В основном то, что вы пытаетесь сделать, может быть достигнуто только с помощью вызова API для ОС или с помощью некоторой библиотеки GUI, такой как Qt (что я рекомендую, потому что это waaaaay проще, чем вызов собственных API, и это также мультиплатформенный)
используя Qt, вы можете показать диалоговое окно ввода почти так же, как и на java:
bool ok;
QString text = QInputDialog::getText(
"MyApp 3000", "Enter your name:", QLineEdit::Normal,
QString::null, &ok, this );
if ( ok && !text.isEmpty() ) {
// user entered something and pressed OK
} else {
// user entered nothing or pressed Cancel
}
вы можете скачать библиотеку Qt здесь:qt.nokia.com/products/developer-tools/
при использовании Visual C++ Express для создания диалоговых окон можно использовать несколько бесплатных редакторов ресурсов. ResEdit это один из лучших, которые я нашел.
вам нужно создать ресурс диалога в a .RC-файл, который вы добавляете в свой проект.
тогда это очень простой случай вызова диалоговое окно - чего появится диалоговое окно из файла ресурсов и места на экране. Переданный в DialogProc будет вызван с рядом уведомлений. Обычно вы хотите вернуть FALSE для всего, но обрабатываете WM_INITDIALOG как место для инициализации элемента управления edit с текстом, и WM_COMMAND будет отправлен при нажатии кнопки.
Microsoft не считает ваш вариант использования достаточно распространенным для оптимизации, как с MessageBox
. Они ожидают, что вы выложите Диалог со многими элементами управления, возможно, с некоторым сложным взаимодействием с элементами управления, и ответите только после того, как диалог будет полностью заполнен. То, что вы просите-это просто упрощенная версия.
редактор ресурсов-это самый простой способ создания диалога, но он не включен в бесплатную экспресс-версию Visual Studio. Вы бы создайте диалоговое окно с текстовым элементом управления для приглашения и элементом управления редактирования для заполнения пользователем. Вы представляете диалог с DialogBox
функция Windows, и она возвращается, когда пользователь нажимает кнопку OK или X в углу диалогового окна. У Microsoft есть некоторая документация для этого здесь.
есть несколько доступных платформ, которые пытаются упростить процесс, таких как MFC, WTL, Qt и wx, но именно так вы бы сделали это с чистым API Windows.
Я должен признать, что я не очень много сделал на пути ввода полей в возрасте, но вы в основном должны выйти за пределы C++, чтобы получить какой-либо графический поле ввода. Там просто нет механизма, встроенного в язык для такого рода вещей по причинам переносимости. Я не помню, применялся ли он и к C++, но C даже не предполагает, что у вас есть консоль. В любом случае, лучше всего было бы что-то вроде того, что вы уже пытались: Win32 API, Qt и т. д. Если вы можете использовать консоль, однако, не стесняйтесь просто использовать библиотеку iostream для выполнения работы.
использование окна консоли лучше подходит для режима связи, когда программа запрашивает пользователя, продолжает, запрашивает пользователя снова и так далее.
и для этого вы можете использовать стандартные средства библиотеки, такие как cin
и cout
.
попробуйте это: InputBox в c++ vs2010
#include "stdafx.h"
#using <system.windows.forms.dll>
#using <Microsoft.VisualBasic.dll>
using namespace System;
int main(array<System::String ^> ^args)
{
Microsoft::VisualBasic::Interaction::InputBox(L"Hello", L"Title", L"DefResp", 500, 500);
return 0;
}