Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/106: Рейтинг темы: голосов - 106, средняя оценка - 4.55
1 / 1 / 0
Регистрация: 14.03.2010
Сообщений: 25
1

Не работает messagebox

14.03.2010, 13:36. Просмотров 22174. Ответов 14
Метки нет (Все метки)

Здравствуйте. у меня в visual studio c++ не хочет работать messagebox. Я прописал:
C++
1
MessageBox (NULL,L"Форма закрывается",L"Закрытие",MB_OK | MB_ICONWARNING);
компилятор выдает ошибку:
1>c:\visual studio 2008\projects\лаба 9\лаба 9\Form1.h(472) : error C2872: MessageBox: неоднозначный символ
1> может быть 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winuser.h(7374) : int MessageBox(HWND,LPCTSTR,LPCTSTR,UINT)'
1> или 'c:\windows\microsoft.net\framework\v2.0.50727\system.window s.forms.dll : System::Windows::Forms::MessageBox'
1>c:\visual studio 2008\projects\лаба 9\лаба 9\Form1.h(472) : error C2872: MessageBox: неоднозначный символ
1> может быть 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winuser.h(7374) : int MessageBox(HWND,LPCTSTR,LPCTSTR,UINT)'
1> или 'c:\windows\microsoft.net\framework\v2.0.50727\system.window s.forms.dll : System::Windows::Forms::MessageBox'
Скажите пжст, что делать
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2010, 13:36
Ответы с готовыми решениями:

Не работает MessageBox!
Код и сама ошибка показаны на скриншоте. В чём проблема и как её решить?

Не работает MessageBox
При компиляции выдает такую ошибку: 1>c:\documents and settings\admin\мои документы\visual studio...

Не работает MessageBox
Не работает след строчка MessageBox("Test"); Выдает ошибку error C2664: 'MessageBoxW' :...

messagebox не работает
if (MessageBox(Handle,"Вы уверены?","Подтверждение",MB_YESNO) == IDYES) { ...

14
1257 / 795 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
14.03.2010, 13:51 2
L - попробуй убрать.
0
1 / 1 / 0
Регистрация: 14.03.2010
Сообщений: 25
14.03.2010, 14:14  [ТС] 3
без L ко всему вышеперечисленному добавляется еще одна ошибка:
1>c:\visual studio 2008\projects\лаба 9\лаба 9\Form1.h(471) : error C2664: MessageBox: невозможно преобразовать параметр 2 из 'const char [18]' в 'LPCTSTR'
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
0
21 / 17 / 0
Регистрация: 05.03.2010
Сообщений: 59
14.03.2010, 14:36 4
Ты используешь WinForms или WinAPI вызов? Если WinForms то будит что-то вроде
C++
1
MessageBox::Show( "Форма закрывается", "Закрытие", MessageBoxButtons::OK, MessageBoxIcon::Warning );
3
1 / 1 / 0
Регистрация: 14.03.2010
Сообщений: 25
14.03.2010, 18:49  [ТС] 5
не знаю, что такое WinForms или WinAPI вызов, но твой вариант работает))спасибо)
0
CEO
Эксперт С++
2255 / 1245 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
14.03.2010, 20:02 6
Цитата Сообщение от BreatheInMyVoid Посмотреть сообщение
Если WinForms
Это не WinForms, а просто вызов класса MessageBox из пространства имен System.Windows.Forms, он будет работать даже в консольном приложении приподключении нужных ссылок
0
185 / 185 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
26.03.2012, 23:20 7
Цитата Сообщение от BreatheInMyVoid Посмотреть сообщение
Ты используешь WinForms или WinAPI вызов? Если WinForms то будит что-то вроде
C++
1
MessageBox::Show( "Форма закрывается", "Закрытие", MessageBoxButtons::OK, MessageBoxIcon::Warning );
хочу написать так:
C++
1
MessageBox::Show( "Ошибка", const_cast< char* >( ex.what() ) , MessageBoxButtons::OK, MessageBoxIcon::Error );
ошибка такая:
error C2665: System::Windows::Forms::MessageBox::Show: ни одна из 21 перегрузок не может преобразовать все типы аргументов
1> forms.dll: может быть "System::Windows::Forms:ialogResult System::Windows::Forms::MessageBox::Show(System::String ^,System::String ^,System::Windows::Forms::MessageBoxButtons,System::Windows: :Forms::MessageBoxIcon)"
1> forms.dll: или "System::Windows::Forms:ialogResult System::Windows::Forms::MessageBox::Show(System::Windows::Fo rms::IWin32Window ^,System::String ^,System::String ^,System::Windows::Forms::MessageBoxButtons)"
И так тоже не работает( та же ошибка ):
C++
1
MessageBox::Show( "Ошибка", System::String( const_cast< char* >( ex.what() ) ) , MessageBoxButtons::OK, MessageBoxIcon::Error );
Что делать?
0
1075 / 1001 / 106
Регистрация: 28.02.2010
Сообщений: 2,889
27.03.2012, 06:57 8
Цитата Сообщение от Chelioss Посмотреть сообщение
Что делать?
Попробуйте:
C++
1
MessageBox::Show( "Ошибка", ex.what() , MessageBoxButtons::OK, MessageBoxIcon::Error );
Или
C++
1
MessageBox::Show( System::String("Ошибка"), System::String(ex.what()) , MessageBoxButtons::OK, MessageBoxIcon::Error );
1
185 / 185 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
27.03.2012, 20:08 9
Евгений М.
Не работает. Та же ошибка.
На всякий случай, не работает под windows forms(C++/CLI) в VS 2010.
0
1075 / 1001 / 106
Регистрация: 28.02.2010
Сообщений: 2,889
27.03.2012, 22:11 10
C++
1
MessageBox::Show(gcnew System::String("Ошибка"), gcnew System::String(ex.what()), ..)
А вот так:
1
185 / 185 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
28.03.2012, 01:29 11
Работает. А так утечки памяти не будет?
0
1075 / 1001 / 106
Регистрация: 28.02.2010
Сообщений: 2,889
28.03.2012, 06:44 12
Цитата Сообщение от Chelioss Посмотреть сообщение
А так утечки памяти не будет?
Это же можно контролировать.
1
185 / 185 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
29.03.2012, 15:57 13
Цитата Сообщение от Евгений М. Посмотреть сообщение
Это же можно контролировать.
Т.е. надо удалить delete'om?
0
1075 / 1001 / 106
Регистрация: 28.02.2010
Сообщений: 2,889
29.03.2012, 19:49 14
Цитата Сообщение от Chelioss Посмотреть сообщение
Т.е. надо удалить delete'om?
Да...
1
185 / 185 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
29.03.2012, 21:46 15
А есть какой-то другой способ сообщить об ошибки?
Это ведь бред:
C++
1
2
3
4
5
6
7
catch( std::exception& ex ) {
                 System::String ^err_name = gcnew System::String( "Ошибка" );
                 System::String ^err_descr = gcnew System::String( ex.what() );
                 MessageBox::Show( err_descr, err_name, MessageBoxButtons::OK, MessageBoxIcon::Error );
                 delete err_name;
                 delete err_descr;
             }
Ведь gcnew может выкинуть исключение внутри catch.

Добавлено через 3 минуты
Цитата Сообщение от Евгений М. Посмотреть сообщение
Да...
Я просто подумал, что тут может быть так же как и в C# работать сборщик мусора.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2012, 21:46

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Не работает MessageBox() в C++ Builder XE
Привет всем, не могу понять почему не работает MessageBox()! вот код каторый я пробую:...

Не работает SetFocus после MessageBox
Пишу на C++ Builder 2010. Проблема в том, что после вызова функции MessageBox, курсор должен...

Windows forms, Не работает MessageBox.
Создал три формы: в первой вопрос в label1: Как вас завут?. Пишем в textBox1 ,И жмем на button1;...

Странно работает Win32::GUI::MessageBox
Добрый день Народ есть в модуле на перле такая строка my $otvet =...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.