Диалоговые окна. Библиотека user32.dll
Всякий раз, когда мы начинаем изучать новый язык программирования, в число первых примеров входит вывод текстовой строки на экран. Операционная система Windows содержит определенное число типов диалоговых окон, с помощью которых пользователь получает уведомления о различных событиях. Создайте новое Windows-приложение и назовите его MessageBox. Располагаем на форме четыре кнопки и устанавливаем следующие свойства формы и кнопок:
Size | 232; 144 |
Text | Message Box |
Name | btnABORTRETRYIGNORE |
Location | 8; 8 |
Size | 200; 23 |
Text | Прервать Повторить Пропустить |
Name | btnYESNOCANCEL |
Location | 8; 32 |
Size | 200; 23 |
Text | Да Нет Отмена |
Name | btnOK |
Location | 8; 56 |
Size | 200; 23 |
Text | OK |
Name | btnYESNO |
Location | 8; 80 |
Size | 200; 23 |
Text | Да Нет |
Снова добавляем к проекту класс и называем его WinAPIClass.cs.
Листинг этого класса:
Листинг 5.2.
(html, txt)
В перечислении MessageBoxType приводятся различные типы стандартных окон и иконок. В обработчиках кнопок выбираем несколько вариантов окон и иконок:
Листинг 5.3.
(html, txt)
Запускаем приложение. При нажатии на кнопки появляются соответствующие диалоговые окна (рис. 5.2).
Рис. 5.2. Результат работы приложения MessageBox
На языке С метод в обработчике будет выглядеть следующим образом (сравните преобразование типов данных!):
INT MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
На диске, прилагаемом к книге, вы найдете приложение MessageBox. (Code\Glava5\MessageBox).
} /// <summary> /// Тип возвращаемого значения. /// </summary> public enum MessageBoxReturnType:int { IDABORT = 3, IDCANCEL = 2, IDCONTINUE = 11, IDIGNORE = 5, IDNO = 7, IDOK = 1, IDRETRY = 4, IDTRYAGAIN = 10, IDYES = 6 } #endregion } }
Листинг 5.2.
В перечислении MessageBoxType приводятся различные типы стандартных окон и иконок. В обработчиках кнопок выбираем несколько вариантов окон и иконок:
private void btnABORTRETRYIGNORE_Click(object sender, System.EventArgs e) { //Текст сообщения string text = "Hello World"; //Заголовок окна string title = "From WinApi"; // Тип данных IntPtr — указатель на объект. WinAPIClass.MessageBox(IntPtr.Zero, text, title, (uint)(WinAPIClass.MessageBoxType.MB_ABORTRETRYIGNORE | WinAPIClass.MessageBoxType.MB_ICONQUESTION));
}
private void btnYESNOCANCEL_Click(object sender, System.EventArgs e) { string text = "Hello World"; string title = "From WinApi"; WinAPIClass.MessageBox(IntPtr.Zero, text, title, (uint)(WinAPIClass.MessageBoxType.MB_YESNOCANCEL | WinAPIClass.MessageBoxType.MB_ICONINFORMATION)); }
private void btnOK_Click(object sender, System.EventArgs e) { string text = "Hello World"; string title = "From WinApi"; WinAPIClass.MessageBox(IntPtr.Zero, text, title, (uint)(WinAPIClass.MessageBoxType.MB_OK | WinAPIClass.MessageBoxType.MB_ICONSTOP));
}
private void btnYESNO_Click(object sender, System.EventArgs e) { string text = "Hello World"; string title = "From WinApi"; WinAPIClass.MessageBox(IntPtr.Zero, text, title, (uint)(WinAPIClass.MessageBoxType.MB_YESNO | WinAPIClass.MessageBoxType.MB_ICONEXCLAMATION));
}
Листинг 5.3.
Запускаем приложение. При нажатии на кнопки появляются соответствующие диалоговые окна (рис. 5.2).
Рис. 5.2. Результат работы приложения MessageBox
На языке С метод в обработчике будет выглядеть следующим образом (сравните преобразование типов данных!):
INT MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
На диске, прилагаемом к книге, вы найдете приложение MessageBox. (Code\Glava5\MessageBox).