![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Cardholder |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 13.3.2004 Репутация: нет Всего: нет |
Изучив C++, приступил к изучению библиотеки MFC. Столкнулся с тем, что ни один учебник, который Я бы не открыл, не смог толком объяснить мне основы MFC.
Вот, к примеру, помогите создать простое "Окно сообщений". С чего начинать? (Я работаю под VC.Net). У меня есть для этого функция: int AfxMessageBox(LPCTSTR lpszText, UINT nType=MB_OK, UINT nIDHelp=0); Далее её вызов: AfxMessageBox("Используемые константы: MB_ABORTRETRYIGNORE|MB_ICONHAND|MB_DEFBUTTON2", MB_ABORTRETRYIGNORE|MB_ICONHAND|MB_DEFBUTTON2); Теперь, какие должны быть включены заголовочные файлы? Будут ли они из библиотеки, или же мне самому создавать их? В общем, пожалуйста, помогите кто-нить с созданием окна сообщения, описывая поэтапно сей процесс. Если есть добрые люди с ссылками на хорошие учебники по MFC, где все начинается с нуля, то поделитесь с заблудшим программером. Спасибо, Друзья! |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
AfxMessageBox ничем не отличается от функции MessageBox из WinAPI, разве что только наличием параметров по умолчанию, и отсутствием возможности задать заголовок для окна сообщения (т.е. window caption).
Первый аргумент функции AfxMessageBox - строка текста (lpszText), которая будет выведена в окне сообщения. Второй аргумент (nType) - это комбинация флагов (или проще - стилей и настроек), применяемая для создания окна сообщения (окно и то же сообщений может быть создано с различными настройками). Третий параметр (nIDHelp) - это необязательный идентификатор контекстной справки, вызываемой (если он задан) по нажатию кнопки клавиши F1. Настройки/стили окна комбинируются между собой оператором двоичного сложения "|", и позволяют: 1) настроить количество кнопок под текстом сообщения и их текст ("Ок", "Да", "Нет", "Отмена", "Повтор", "Прервать", "Игнорировать"), можно использовать одно из следующих значений (смысл каждого понятен из названия): MB_OK, MB_OKCANCEL, MB_YESNO, MB_YESNOCANCEL, MB_RETRYCANCEL и другие 2) настроить тип иконки (вопросительный/восклицательный знак, знак "?" и другие), отображаемой слева от текста сообщения: MB_ICONEXCLAMATION, MB_ICONINFORMATION, MB_ICONQUESTION, MB_ICONSTOP. В зависимости от этой настройки, будет также выдаваться один из типов стандартных звуков Windows при отображении окна 3) выбрать одну из кнопок текущей при отображении окна: MB_DEFBUTTON1...MB_DEFBUTTON4 4) настроить, как будет вести себя окно по отношению к остальным окнам приложения - родительскому и остальным (для AfxMessageBox родительским окном является то окно, в котором произошёл вызов этой функции): MB_APPLMODAL, MB_SYSTEMMODAL, MB_TASKMODAL Для "повседневного" использования обычно достаточно флагов MB_OK/MB_OKCANCEL или MB_YESNO/MB_YESNOCANCEL и указания типа иконки. Пример вызова AfxMessageBox:
Кроме того, чтобы обработать результат, остающийся после закрытия окна сообщения (в приведённом примере пользователь мог нажать как кнопку "Да", так и кнопку "Нет" - надо же как-то это обработать!), функция AfxMessageBox и её аналоги (MessageBox из WinAPI и из класса CWnd) возвращают int, равный одному из следующий значений: IDOK, IDYES, IDNO, IDCANCEL, IDABORT, IDRETRY, IDIGNORE. Теперь о заголовочных файлах. В случае, если проект был создан средствами AppWizard и поддерживает MFC (это может быть проект на основе диалогового окна, SDI/MDI окна или вообще консольное приложение с поддержкой MFC), то никаких дополнительных заголовочных файлов не нужно для использования AfxMessageBox. В противном случае (когда проект представляет собой "чистое" приложение WinAPI), можно с таким же успехом пользоваться "обычной" функцией MessageBox. -------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |