Для облегчения программирования Windows-приложений фирмой Microsoft была разработана библиотека MFC (Microsoft Foundation Classes - Базовые . .только с использованием библиотеки классов MFC (Microsoft Foundation Class library). Основы программирования под Windows. Поскольку архитектура Windows-программ.. Основы программирования на 32-битном Ассемблере, разработка с его. основы написания Windows-приложений с использованием библиотеки MFC. ID: 5762. Название работы: Основы программирования под Windows с использованием MFC. Категория: Реферат..
. MFC - Урок 1 - Создание первого диалогового приложения. Michael Rusakov . Основы C++, лекция 1 - Duration: 1:21:31. Laur B. 325,639 . Основы программирования для Windows. Преимущества использования библиотеки MFC. Обзор средств Microsoft Developer Studio..
Иконки и курсоры / Основы программирования с помощью библиотеки MFC / Visual C++ Официальный сайт справочников World C++, World C#, ASM World. Программмирование на C/C++, C#, ASP.
NET, Ассемблере. Иконки и курсоры являются ресурсами и. В этой главе мы рассмотрим способ. Кроме того, мы рассмотрим, как сделать.
Это очень удобно. Изменять иконку и курсор. Но мы. рассмотрим именно универсальный метод, который. Вам рекомендуется. Создание иконки и курсора.
Для создания иконки и курсора нужно. Иконки. сохраняются в файлах с расширением ico, а курсоры - в файлах с. Все курсоры имеют размер 3.
Обычно используются. Каждый курсор имеет так.
Она. может располагаться в любом месте курсора. Для. курсоров типа "указатель" это обычно вершина. Иконки могут иметь размер 1. Последний размер обычно не используется.
Иконки могут иметь 1. При. использовании ресурсного редактора среды Visual. C++ 4. 0 и выше иконки всех. Для современных приложений. Загрузка иконки и курсора из.
К сожалению, на текущий момент MFC плохо. Поэтому иногда. удобнее пользоваться функциями Windows API. Перед рассмотрением функций. Дескриптор - это 3. Windows. При традиционном SDK- программировании дескрипторы.
Например, свои. дескрипторы имеют иконки, курсоры и само. Для дескрипторов каждого объекта.
HICON, HCURSOR. Следующее понятие, которое нам нужно. Класс окна - . это структура данных в Windows.
Перед тем, как. создать реальное окно, приложение регистрирует. Обычно MFC полностью. Но так как такие. Будем предполагать, что в декларации. С++) объявлены переменные m_h. Icon. Small, m_h. Icon. Big. m_h. Cursor - соответственно.
Тогда для загрузки иконок и курсора нужно. Получить дескриптор модуля (приложения). HINSTANCE h. Inst = Afx. Get. Instance. Handle(). Загрузить иконку 1. Icon. Small = (HICON) : :Load.
Image(h. Inst, MAKEINTRESOURCE(IDI_ICON). IMAGE_ICON, 1. 6, 1.
LR_DEFAULTCOLOR). Загрузить иконку 3. Icon. Big = (HICON) : :Load. Image(h. Inst, MAKEINTRESOURCE(IDI_ICON). IMAGE_ICON, 3. 2, 3. LR_DEFAULTCOLOR). Загрузить курсор.
Cursor = Afx. Get. App()- > Load.
Cursor(IDC_CURSOR). Сначала мы получаем дескриптор модуля. MFC Afx. Get. Instance. Handle(). Затем мы загружаем маленькую и. Windows API Load. Image(), и получаем их дескрипторы.
Эта. функция очень мощная, и позволяет загружать. И наконец, мы. загружаем курсор уже с помощью функции MFC Load. Cursor(), члена класса CWin. App. Функция Afx.
Get. App(). возвращает адрес объекта. Изменение иконки и курсора окна. После того, как мы получили. Класс окна нужно изменять для.
MFC.) Для этого используется API- функция Set. Class. Long(), которая изменяет атрибут класса. Первый параметр этой функции - . Дескриптор окна хранится в.
MFC CWnd под. названием m_h. Wnd. Если. главным окном приложения является диалог, то для. Устанавливаем курсор для диалогового окна. Так как MFC не поддерживает динамическое. API, модифицируя оконный класс.
Set. Class. Long(m_h. Wnd, GCL_HCURSOR, (long) m_h. Cursor). // Делаем то же самое для всех элементов управления.
DFFF; ++i) {. CWnd *p. Ctrl = this- > Get. Dlg. Item(i). if(p. Ctrl != 0). Set. Class. Long(p. Ctrl- > m_h. Wnd, GCL_HCURSOR, (long) m_h.
Cursor). // Устанавливаем иконки. Здесь уже можно использовать MFC. Set. Icon(m_h. Icon. Big, TRUE). this- > Set. Icon(m_h. Icon. Small, FALSE). Сначала мы модифицируем курсор в. Затем мы то же самое.
Мы перебираем все возможные. И наконец, мы. изменяем большую и маленькую иконки. Здесь уже. есть хорошая поддержка со стороны MFC. Использование диалога в качестве. Как уже говорилось, это часто бывает.
Сделать это достаточно просто. Во- первых, нужно создать диалог в ресурсах. Во- вторых, нужно класс главного окна приложения. CDialog. Перед. конструктором класса главного окна нужно. CDialog, где привязать объект к ресурсам. CMain. Frame: :CMain. Frame(). : CDialog(IDD_MYDIALOG).
И в- третьих, в функции CApp: :Init. Instance(). должен присутствовать. Создаем объект диалогового окна. CMain. Frame dlg. Wnd. // Cообщаем MFC адрес окна. Main. Wnd = & dlg.
Wnd. // Отображаем модальный диалог. Wnd. Do. Modal(). Возвратим FALSE, чтобы MFC не пыталась инициировать. FALSE. Мы отображаем модальный диалог. Так. как при завершении функции Do. Modal() нам уже не нужна очередь. MFC, делая вид, что.
На самом же деле. Пример программы. CUR_ICO. hpp. #include "STDAFX. H". // Класс диалогового окна, главного окна приложения. CMain. Frame: public CDialog {. CMain. Frame(). enum {IDD = IDD_MAINFRAME}. BOOL On. Init. Dialog().
Внутренние дескрипторы иконки и курсора. HICON m_h. Icon. Small, m_h. Icon. Big. HCURSOR m_h.
Cursor. DECLARE_MESSAGE_MAP(). Класс приложения. CApp: public CWin. App {. BOOL Init. Instance(). #include "STDAFX.
H". #include < string. CUR_ICO. HPP". BOOL CApp: :Init. Instance(). // Создаем объект диалогового окна.
CMain. Frame dlg. Wnd. // Cообщаем MFC адрес окна. Main. Wnd = & dlg. Wnd. // Отображаем модальный диалог. Wnd. Do. Modal(). Возвратим FALSE, чтобы MFC не пыталась инициировать.
FALSE. BEGIN_MESSAGE_MAP(CMain. Frame, CDialog). ON_WM_DESTROY(). END_MESSAGE_MAP(). CMain. Frame: :CMain. Frame(). : CDialog(CMain.
Frame: :IDD). // Загружаем из ресурсов иконку и курсор. MFC плохо поддерживает процесс динамического. Windows API. HINSTANCE h. Inst = Afx. Get. Instance.
Handle(). // Получить дескриптор модуля. Icon. Small = (HICON) : :Load. Image(h. Inst, MAKEINTRESOURCE(IDI_ICON). IMAGE_ICON, 1. 6, 1. LR_DEFAULTCOLOR); //Иконка 1. Icon. Big = (HICON) : :Load. Image(h. Inst, MAKEINTRESOURCE(IDI_ICON).
IMAGE_ICON, 3. 2, 3. LR_DEFAULTCOLOR); //Иконка 3. Cursor = Afx. Get. App()- > Load. Cursor(IDC_CURSOR). BOOL CMain. Frame: :On.
Init. Dialog(). // Устанавливаем курсор для диалогового окна. Так как MFC не поддерживает динамическое. API, модифицируя оконный класс. Set. Class. Long(m_h. Wnd, GCL_HCURSOR, (long) m_h.
Cursor). // Делаем то же самое для всех элементов управления. DFFF; ++i) {. CWnd *p.
Ctrl = this- > Get. Dlg. Item(i). if(p. Ctrl != 0). Set. Class. Long(p. Ctrl- > m_h. Wnd, GCL_HCURSOR, (long) m_h. Cursor). this- > Set.
Icon(m_h. Icon. Big, TRUE). Set. Icon(m_h. Icon.
Small, FALSE). Рис. Использование собственных иконки и. Поэкспериментируйте с программой. Попробуйте отключить цикл, который модифицирует. Измените. программу так, чтобы главным окном было обычное. Стандартные иконки и курсоры.
Часто в программах нужно использовать. Windows. Для этого можно использовать или. API Load. Image(), или. MFC Load. Standard. Icon() и Load. Standard. Cursor(). Работа со стандартными курсорами. Для стандартных иконок есть.
IDI_, а для стандартных курсоров - с. IDC_. Например. стандартный курсор в виде "песочных часов".