Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.99/120: Рейтинг темы: голосов - 120, средняя оценка - 4.99
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
1

Как вывести диалоговое окно со знаком вопроса и двумя кнопками?

01.10.2009, 16:11. Показов 23977. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите, не знаю как сделать. Мне нужно,чтоб при нажатии на кнопку, программа выдала диалоговое сообщениес картинкой знак вопроса. На диалоговом сообщении, чтоб было 2 кнопки, Да и Нет. Если я нажму да,тогда выйти из программы,если нет,тогда возвратится к программе.
ВОт,что я сумел сделать, дальше не знаю.

C++
1
MessageBox(0,"Вы желаете завершить приложение?","Информация",MB_YESNO);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2009, 16:11
Ответы с готовыми решениями:

Вывести диалоговое окно общего назначения с кнопками Yes, No, Cancel
Вывести диалоговое окно общего назначения с кнопками Yes, No, Cancel, и обеспечить проверку нажатия...

Диалоговое окно с 2мя кнопками (ОК и Отмена)
Помогите сделать диалоговое окно с 2мя кнопками. И в зависимости от нажатой кнопки выполняются...

Как вывести диалоговое окно?
Пишу на GraphABC 1) Как вывести диалоговое окно ? Например, пользователь вводит название файла,...

Как программно вывести диалоговое окно печати
Помогите пожалуйста понять. Как программно вывести диалоговое окно печати(printer)?

25
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
01.10.2009, 16:36 2
Golovastik, нарусуй сам форму и делай все, что хочешь - это самый простой вариант...
1
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
01.10.2009, 16:45 3
C++
1
2
3
4
5
6
if (MessageBox(0,"Вы желаете завершить приложение?","Информация",MB_YESNO|MB_ICONQUESTION) == IDOK)
{
   // нажали Yes
}
else
   // нажали No
1
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
01.10.2009, 17:00  [ТС] 4
Написал вот так:
C++
1
2
3
4
5
6
if (MessageBox(0,"Вы желаете завершить приложение?","Информация",MB_YESNO|MB_ICONQUESTION) == IDOK)
{
   Form1->Close();
}
else
   // нажали No
Форма не закрывается. Что дописать в else,чтоб возвратится назад к программе.
0
0 / 0 / 0
Регистрация: 18.07.2009
Сообщений: 39
01.10.2009, 17:03 5
лучший способ сделать новую форму...
0
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
01.10.2009, 17:22 6
Цитата Сообщение от Golovastik Посмотреть сообщение
Форма не закрывается. Что дописать в else,чтоб возвратится назад к программе.
как ты это вызываешь? приведи полный код обработчика

ЗЫ: ошибся немного IDYES вместо IDOK
1
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
01.10.2009, 17:38  [ТС] 7
Да, действительно заработало, else ,оказывается использовать не нужно, нужно просто написать вот атк:
C++
1
2
3
4
if (MessageBox(0,"Вы желаете завершить приложение?","Информация",MB_YESNO|MB_ICONQUESTION) == IDYES)
{
  Form1->Close(); // нажали Yes
}
0
Маэстро
Вирусоборец
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
02.10.2009, 17:55 8
Здравствуйте, я бы хотел узнать какие ещё есть значения помимо следующих:

1. MB_ICONINFORMATION - выводит картинку с восклицательным знаком
2. MB_ICONWARNING - жёлтый треугольник с восклицательным знаком
3. MB_ICONERROR - красный кружок
4. MB_ICONHELP - знак вопроса
5. MB_ICONQUESTION - знак вопроса

Какие значения могут быть ещё?
0
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
02.10.2009, 18:01 9
MB_ICONEXCLAMATION
MB_ICONWARNING
MB_ICONINFORMATION
MB_ICONASTERISK
MB_ICONQUESTION
MB_ICONSTOP
MB_ICONERROR
MB_ICONHAND
http://msdn.microsoft.com/en-u... S.85).aspx
3
Маэстро
Вирусоборец
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
02.10.2009, 18:19 10
XuTPbIu_MuHTAu, Спасибо. MB_ICONHAND - знал, но забыл написать.

Не подскажете, как сделать, чтобы при выводе окошка, была активна не кнопка Да, а кнопка Нет.

Код
...
   if(Application->MessageBox("Отсутствует файл! Продолжить?", "Внимание: Ошибка!", MB_YESNO | MB_ICONWARNING) == IDYES)
...
0
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
02.10.2009, 18:23 11
Цитата Сообщение от Maestrino Посмотреть сообщение
XuTPbIu_MuHTAu, Спасибо. MB_ICONHAND - знал, но забыл написать.

Не подскажете, как сделать, чтобы при выводе окошка, была активна не кнопка Да, а кнопка Нет.

Код
...
   if(Application->MessageBox("Отсутствует файл! Продолжить?", "Внимание: Ошибка!", MB_YESNO | MB_ICONWARNING) == IDYES)
...
Это знать не надо,это надо смотреть в справке.В предыдущем посте ссылка на описание MessageBox, там все-все параметры.
0
Маэстро
Вирусоборец
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
02.10.2009, 18:42 12
XuTPbIu_MuHTAu, Да я вообще-то уже разобрался, у меня только эта ссылка - http://msdn.microsoft.com/en-us/libr...05(VS.85).aspx - подвесишивает Сеть и браузер минут на 10. Пришлось закрывать через диспетчер задач, так и не дождался.

Надеюсь кому-либо будет полезно, отвечаю на свой вопрос сам. То что выделяет кнопку по умолчанию, выделено красным цветом.
Код
...
   if(Application->MessageBox("Отсутствует файл! Продолжить?", "Внимание: Ошибка!", MB_YESNO | MB_ICONWARNING [color=red]| MB_DEFBUTTON2[/color]) == IDYES)
...
0
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
02.10.2009, 19:40  [ТС] 13
Подскажите, как сделать,чтоб при нажатии кнопки нет, при первом разе, программа не переходила на следующее сообщение, а просто возвращалась обратно к программе.Вот написал,только пробьлемма,что при первом нажатии на кнопку "НЕТ", программа переходит ко второму дталоговому сообщению, а мне нужно чтоб при первои нажатии кнопки "НЕТ", проограмма возвращалась обратно к программе:

C++
1
2
3
4
5
6
7
8
9
MessageBox(0,"Вы действительно желаете закрыть программу?",
   "Информация",MB_YESNO | MB_ICONQUESTION);
 
if(MessageBox(0,"Это окончательный ваш ответ?",
"Информация",MB_YESNO | MB_ICONQUESTION) == IDYES)
{
MessageBox(0,"Прощайте,программа закрывается","Информация",MB_ICONWARNING);
     Form1->Close();
}
0
Маэстро
Вирусоборец
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
02.10.2009, 19:53 14
Нужно последовательность if сделать правильной. У вас же если ответят Нет, всё равно идёт условие if и предлагает ещё раз окошко выбора.
C++
1
2
3
4
5
6
if(MessageBox(0,"Вы действительно желаете закрыть программу?", "Информация",MB_YESNO | MB_ICONQUESTION) == IDYES){
     if(MessageBox(0,"Это окончательный ваш ответ?", "Информация",MB_YESNO | MB_ICONQUESTION) == IDYES){
        MessageBox(0,"Прощайте,программа закрывается","Информация",MB_ICONWARNING);
        Form1->Close();
      }
   }
1
0 / 0 / 0
Регистрация: 06.09.2009
Сообщений: 20
04.10.2009, 16:03 15
так, вопорос глупого студента, думаю новую тему не надо создавать. Так вот есть форма с кнопками и т.д. Как сделать, что бы при нажатии открывалась вторая форма и там допустим было описание программы или кнопки. Вот и ещё, при работе программы у меня должно выводиться диологовое окно с двумя кнопками да и нет, мне нужно например если человек нажал "да" то переменной в главной форме передалось значение 1, а если человек нажмёт "нет", то переменной передалось значение 2.. ну или true false..
0
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
04.10.2009, 17:23 16
смотри в справке возвращаемые значения.
0
Маэстро
Вирусоборец
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
04.10.2009, 21:33 17
Цитата Сообщение от Flash211 Посмотреть сообщение
Так вот есть форма с кнопками и т.д. Как сделать, что бы при нажатии открывалась вторая форма и там допустим было описание программы или кнопки
Создаёте к первой, вторую форму с элементами управления и вызываете её.

C++
1
2
3
4
5
6
7
8
9
10
#include "Form1.h"
#include "Form2.h"   // Незабываем подключить вторую форму.
 
// обработка кнопки "Ввод"
void __fastcall TForm1::Enter(TObject *Sender)
{
        Form2 = new TForm2(this);
        if(Form2->ShowModal() == mrCancel)
                return;
}
0
0 / 0 / 0
Регистрация: 06.09.2009
Сообщений: 20
05.10.2009, 00:39 18
спаааасибо, а чем этот метод лучше чем просто "Form3->ShowModal();" ? . черт удалить нельзя уже) ладн ) получаться, что он создаёт форму заново, т.е экономит память?) а "Form3->ShowModal();" он просто делает видимой, но уже созданную форму)

Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
смотри в справке возвращаемые значения.
жаль, что в англе я не силён =(

Добавлено через 41 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int DisplayResourceNAMessageBox()
{
    int msgboxID = MessageBox(
        NULL,
        (LPCWSTR)L"Resource not available\nDo you want to try again?",
        (LPCWSTR)L"Account Details",
        MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
    );
 
    switch (msgboxID)
    {
    case IDCANCEL:
        // TODO: add code
        break;
    case IDTRYAGAIN:
        // TODO: add code
        break;
    case IDCONTINUE:
        // TODO: add code
        break;
    }
 
    return msgboxID;
}
кто бы объяснил
тот пример XD у меня лично при компиляции ошибки выдаёт " [C++ Error] Unit1.cpp(223): E2141 Declaration syntax error" XD расскажите об этом классе подробно XD плиииз
0
Маэстро
Вирусоборец
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
05.10.2009, 11:39 19
Цитата Сообщение от Flash211 Посмотреть сообщение
получаться, что он создаёт форму заново, т.е экономит память?)
Вообще-то мой пример, это первое вспомнилось, я когда сталкивался с вопросом о выводе второго окна, по началу именно так и делал, пока мне не объяснили, что зачем каждый раз создавать заново окно? Если можно обычно Form1->ShowModal() использовать. Но к сожалению, я подзабыл в тот момент, когда писал вам ответ.
0
1 / 1 / 1
Регистрация: 22.03.2016
Сообщений: 19
22.03.2016, 11:12 20
Самый простой вариант:
C++
1
2
3
4
5
6
7
8
9
if(MessageDlg("Удалить запись?", mtConfirmation, mbOKCancel, 0) == mrOk)
{
ShowMessage("Запись будет удалена");
.... // процедура удаления записи
}
else
{
 ShowMessage("Запись не будет удалена");
 }
1
22.03.2016, 11:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2016, 11:12
Помогаю со студенческими работами здесь

Как вывести диалоговое окно при нажатии кнопки?
Как можно вывести дилоговое окно при нажатие кнопки : private void button1_Click(object sender,...

Как вывести диалоговое окно с запросом ввода данных?
Здравствуйте. Пишу программу и возник такой вопрос: как вывести диалоговое окно с запросом ввода...

Как вывести простое диалоговое окно, со строкой s2 : string на экран
Ребят, как вывести простое диалоговое окно , со строкой s2 : string на экран? Я знаю что есть такая...

Вывести диалоговое окно MessageDlg
Кто нибудь разобрался с MessageDlg? Никак не получается вывести диалоговое окно.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru