Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Начал изучение MFC |
Автор: Cardholder 3.4.2004, 11:31 |
Изучив 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 3.4.2004, 12:07 | ||
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. |