Как вывести окошко с сообщением?

Код:
#include <windows.h>
int main()
{
MessageBox(0, "Hello, world!", "App", 0);
return 0;
}

Комментарии

Код:
DWORD MessageBox(HWND hWnd,
                                            LPCSTR IpText,
                                            LPCSTR IpCaption,
                                            UINT uType);

hWnd - дескриптор окна. Переменная, содержащая данные об окне. ПРИ ЭТОМ СООБЩЕНИЕ ЦЕПЛЯЕТСЯ К ЭТОМУ ОКНУ. И пока сообщение не закроешь, не сможешь работать дальше с этим окном (программой). может принимать значения

Код:
HWND_DESKTOP - дескриптор рабочего стола (рабочий стол - это тоже окно! закрыть его можно если убить в диспетчере задач процесс explorer.exe
0 - Нет дескриптора
и много других значений

IpText - переменная строкового типа данных, текст сообщения
IpCaption - переменная строкового типа данных, заголовок
uType - переменная usingned int (в windows это UINT). Принимает значения соответственно только чисел.
Но, как мы знаем, есть определение при помощи директивы
#define

Код:
#define ONE 1

И компилятор при компилировании заменит в исходнике ONE на единицу.
В файле winuser.h, содержащимся в файле windows.h отпределены следующие типы:

Код:
#define MB_OK __MSABI_LONG(0x00000000)
#define MB_OKCANCEL __MSABI_LONG(0x00000001)
#define MB_ABORTRETRYIGNORE __MSABI_LONG(0x00000002)
#define MB_YESNOCANCEL __MSABI_LONG(0x00000003)
#define MB_YESNO __MSABI_LONG(0x00000004)
#define MB_RETRYCANCEL __MSABI_LONG(0x00000005)
#define MB_CANCELTRYCONTINUE __MSABI_LONG(0x00000006)
#define MB_ICONHAND __MSABI_LONG(0x00000010)
#define MB_ICONQUESTION __MSABI_LONG(0x00000020)
#define MB_ICONEXCLAMATION __MSABI_LONG(0x00000030)
#define MB_ICONASTERISK __MSABI_LONG(0x00000040)
#define MB_USERICON __MSABI_LONG(0x00000080)
#define MB_ICONWARNING MB_ICONEXCLAMATION
#define MB_ICONERROR MB_ICONHAND
#define MB_ICONINFORMATION MB_ICONASTERISK
#define MB_ICONSTOP MB_ICONHAND
#define MB_DEFBUTTON1 __MSABI_LONG(0x00000000)
#define MB_DEFBUTTON2 __MSABI_LONG(0x00000100)
#define MB_DEFBUTTON3 __MSABI_LONG(0x00000200)
#define MB_DEFBUTTON4 __MSABI_LONG(0x00000300)
#define MB_APPLMODAL __MSABI_LONG(0x00000000)
#define MB_SYSTEMMODAL __MSABI_LONG(0x00001000)
#define MB_TASKMODAL __MSABI_LONG(0x00002000)
#define MB_HELP __MSABI_LONG(0x00004000)
#define MB_NOFOCUS __MSABI_LONG(0x00008000)
#define MB_SETFOREGROUND __MSABI_LONG(0x00010000)
#define MB_DEFAULT_DESKTOP_ONLY __MSABI_LONG(0x00020000)
#define MB_TOPMOST __MSABI_LONG(0x00040000)
#define MB_RIGHT __MSABI_LONG(0x00080000)
#define MB_RTLREADING __MSABI_LONG(0x00100000)
#define MB_SERVICE_NOTIFICATION __MSABI_LONG(0x00200000)
#define MB_SERVICE_NOTIFICATION_NT3X __MSABI_LONG(0x00040000)
#define MB_TYPEMASK __MSABI_LONG(0x0000000F)
#define MB_ICONMASK __MSABI_LONG(0x000000F0)
#define MB_DEFMASK __MSABI_LONG(0x00000F00)
#define MB_MODEMASK __MSABI_LONG(0x00003000)
#define MB_MISCMASK __MSABI_LONG(0x0000C000)

это не типы данных, а типы выводимых сообщений, а то я Вас путаю)
Итак. пример с типами выводимых сообщений

Код:
#include <windows.h>
int main()
{
MessageBox(GetForegroundWindow(), "Hello, world!", "App", MB_ICONERROR|MB_OKCANCEL);
return 0;
}

Забыл сказать. Тпы объединяют при помощи знака |. Например вверху - объединение иконки ошибки и добавление в окно кнопок ОК Выход. Вот так как то... Я сам еще учусь так что не обижайтесь если что не так.