Как вывести окошко с сообщением?
#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; }
Забыл сказать. Тпы объединяют при помощи знака |. Например вверху - объединение иконки ошибки и добавление в окно кнопок ОК Выход. Вот так как то... Я сам еще учусь так что не обижайтесь если что не так.