Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > MessageBox


Автор: uranpro 13.4.2009, 11:51
Добрый день.
Хочу научиться использовать MessageBox
помогите немного)

Код

MessageBox(L"Test");

выдает ошибку
Код

error C2440: <function-style-cast>: невозможно преобразовать 'const wchar_t [5]' в 'System::Windows::Forms::MessageBox'

Набор знаков не задан.

в MSDN пишут
Код

1. MESSAGEBOX(eMessageText [, nDialogBoxType ][, cTitleBarText][, nTimeout]) function

2. int MessageBox(          HWND hWnd,
    LPCTSTR lpText,
    LPCTSTR lpCaption,
    UINT uType) function
example:
MessageBox(
        NULL,
        (LPCWSTR)L"Resource not available\nDo you want to try again?",
        (LPCWSTR)L"Account Details",
        MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
    );
);

3. messagebox class
example:
MessageBox::Show( "You must enter a name.", "Name Entry Error",
            MessageBoxButtons::OK, MessageBoxIcon::Exclamation );



1. как отобразить сообщение с текстом и одной кнопкой?
2. как отобразить сообщение с текстом и набором кнопок?

если можно, то подробно! как для первоклашки)

Автор: taiven 13.4.2009, 12:41
Код

#include <windows.h>

int main()
{  
    unsigned result = MessageBoxA(NULL, "Test", "Message", MB_ICONQUESTION | MB_YESNOCANCEL);
    switch(result)
    {
        case IDYES : MessageBoxA(NULL, "YES", "Message", MB_ICONINFORMATION | MB_OK);break;
        case IDNO : MessageBoxA(NULL, "NO", "Message", MB_ICONINFORMATION | MB_OK);break;
        case IDCANCEL : MessageBoxA(NULL, "CANCEL", "Message", MB_ICONINFORMATION | MB_OK);break;            
    }
    
    return 0;    
}

Автор: andrew_121 13.4.2009, 12:44
uranpro, Вот прямо так:
Код

MessageBox( NULL, // дескриптор окна
        (LPCWSTR)L"Resource not available\nDo you want to try again?",
        (LPCWSTR)L"Account Details",
        MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
    );

Если приложение НЕ уникодное "L" не нужно.

Автор: GoldFinch 13.4.2009, 12:53
чтоб не думать о том юникодное приложение или нет, надо использовать TEXT()
    
MessageBox(0,TEXT("Test"),0,0);

Автор: Andrey44 13.4.2009, 13:06
Цитата(GoldFinch @  13.4.2009,  12:53 Найти цитируемый пост)
чтоб не думать о том юникодное приложение или нет, надо использовать TEXT()
    
MessageBox(0,TEXT("Test"),0,0); 


А что-бы меньше писать
Код

MessageBox(0, _T("Test"), 0, 0); 

Автор: xvr 13.4.2009, 13:27
И выставить тип проекта в Win32, а не в Manged C++ & .CLR (судя по сообщению об ошибке у тебя стоит именно оно) Если конечно у тебя вообще не C# проект  smile 

Автор: uranpro 13.4.2009, 13:39
Всем спасибо, сейчас проверю и отпишу!

Автор: uranpro 13.4.2009, 13:55
xvr, ты прав) но я не хочу писать интерфейс ручками, нашел только в CLR конструктор, где можно перемещать компоненты Drag&Drop =) в вин32 не нашел как это сделать.
не судите строго, я только начал изучать vc++

я с дельфи ) привык к интуитивно-понятному интерфейсу

Автор: uranpro 13.4.2009, 14:27
А как в CLR вывести сообщение ? типа MessageBox

Автор: Gluttton 13.4.2009, 15:17
http://msdn.microsoft.com/ru-ru/library/system.windows.forms.messagebox.aspx

Автор: uranpro 13.4.2009, 16:46
Gluttton, спасибо! я забыл пространство имен добавить)

Автор: xvr 13.4.2009, 16:50
Цитата(uranpro @ 13.4.2009,  13:55)
xvr, ты прав) но я не хочу писать интерфейс ручками, нашел только в CLR конструктор, где можно перемещать компоненты Drag&Drop =) в вин32 не нашел как это сделать.

Если пишешь в CLR, то лучше сразу использовать C#  Managed C++ это язык, который удачно сочетает все недостатки как .net платформы, так и собственно C++, к тому же он еще очень удачно добавляет новые, которых не было у обоих родителей  smile Использовать его можно ТОЛЬКО если есть какие то наработки на С++ которые надо напрямую использовать в .NET

Автор: uranpro 13.4.2009, 17:11
xvr, спасибо за совет!

Автор: Gluttton 13.4.2009, 17:20
Цитата

Gluttton, спасибо! я забыл пространство имен добавить)


Всегда пожалуйста  smile .

Мы с тобой от части коллеги  smile , я в CLR\C++ попал из Borland C++ Builder'а (странно, мне показалось, что я где то прочитал, что ты на Delphi работал  smile ), к сожалению, у меня уже нет времени "спрыгивать" на С#, но ИМХО 

Цитата

Если пишешь в CLR, то лучше сразу использовать C#


И если даже не

Цитата

Managed C++ это язык, который удачно сочетает все недостатки как .net платформы, так и собственно C++, к тому же он еще очень удачно добавляет новые, которых не было у обоих родителей


(уж больно так категорично)  smile 

то как минимум, потому что в том же MSDN'е чаще приводяться примеры для VB и C# и реже для С++. В большенстве случаев, понять и "скопировать" пример с С# на С++ не состовляет труда, но в ряде случаев можно столкнуться с определенными трудностями (особенно проблема характерна для "специалистов" моего уровня  smile ).

Автор: uranpro 13.4.2009, 17:56
Gluttton,  =) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)