Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
CString outStr, Scolor, Smaterial, Snumber;
if(fDlg. m_check1)Snumber+="1 ";
if(fDlg. m_check2)Snumber+="2 ";
if(fDlg. m_check3)Snumber+="3 ";
switch(fDlg. m_color)
{
case 0:
Scolor="желтый";
break;
case 1:
Scolor="красный";
break;
case 2:
Scolor="синий";
break;
}
switch(fDlg. m_taste)
{
case 0:
Smaterial="дерево";
break;
case 1:
Smaterial="металл";
break;
case 2:
Smaterial="пластик";
break;
}
outStr. Format("Имя - %s\nСерийный номер %d\nПароль
%s\nМатериал %s\nЦвет %s\nДоставка %d\nКаркас %s\n
Оценка %s\nВыбор %s", fDlg. m_name, fDlg. m_serial,
fDlg. m_pword, Smaterial, Scolor, fDlg. m_transport,
fDlg. m_frm, fDlg. m_otd, Snumber);
MessageBox(outStr);
Горизонтальные и вертикальные полосы прокурутки. Это обычные линейки прокрутки окна. Но их также можно использовать внутри самого окна. При своем движении или при нажатии кнопок со стрелками посылаются сообщения WM_HSCROLL или WM_VSCROLL, где параметром передается идентификатор элемента, который вызывает сообщение. До начала использования линейки прокрутки необходимо связать с ней целочисленную переменную и указать пределы ее изменения. Если пределы будут малы, то бегунок на линейке будет двигаться дискретно (шагами), а если пределы велики, то движение будет плавным.
Стилей у линеек прокрутки нет.
Ползунок. Аналогичен полосам прокрутки, но имеет шкалу и у него нет кнопок по краям (рис. 13). Способ инициализации аналогичен линейкам прокрутки.
Свойства элемента:
- Orientation – горизонтальное или вертикальное расположение;
- Point – указывает на положение шкалы и заостренного конца;
- Tick Marks, Auto Ticks – определяют внешний вид шкалы ползунка;
- Border, Client Edge, Static Edge, Modal Frame – указывают глубину и высоту положения рамки.

Рис. 13. Виды ползунков
Индикатор продвижения. Аналогичен линейкам прокрутки и ползунку, у него такие же способы инициализации, но его невозможно двигать вручную.
Свойства элемента:
- Smooth – целое или дискретное поле продвижения;
- Vertical – ориентация;
- Border, Client Edge, Static Edge, Modal Frame – указывают глубину и высоту положения рамки.
Счетчик. Обычно связан с полем ввода (которое называется buddy – «приятель») и позволяет увеличивать или уменьшать значения в этом поле, нажимая на кнопки счетчика. Скорость изменения значения зависит от времени нажания на кнопку (чем дольше кнопка удерживается, тем быстрее изменяются значения). Со счетчиком необходимо связать переменную, установить диапазон значений и, если необходимо, задать усокрение набора. Чтобы значения отображались в соответствующем поле ввода, надо обрабатывать сообщение WM_VSCROLL или WM_HSCROLL.
Свойства элемента:
- Orientation – горизонтальный или вертикальный счетчик (соответственно посылает сообщения WM_HSCROLL или WM_VSCROLL);
- Alignment – положение счетчика относительно его поля ввода;
- Auto Buddy – автоматически назначает в «приятели» предшествующее ему поле ввода;
- No thousands – не разделяет тысячи и миллионы запятыми;
- Arrow Keys – позволяет использовать кнопки со стрелками для увеличения значений;
- Client Edge, Static Edge, Modal Frame – указывают глубину и высоту положения рамки.
IP адрес. Поле для ввода IP адреса автоматически отделяет байты точками. С ним связывается четырехбайтовая переменная типа CIPAdressCtrl (практически DWORD), а потом из нее вручную извлекаются все байты. Свойств у элемента практически нет.
Элементы, допускающие графические изображения. Следущие элементы управления позволяют вставлять в себя пиктограммы 16×16. Для этого сначала нужно подготовить массив этих пиктограммок в специальной переменной класса CImageList. Примерно так:
CImageList myList;
HICON hIcon;
myList. Create(16, 16, ILC_COLOR, 8, 8);
// 16x16 - размер иконок, ILC_COLORn - n-битный цвет,
// если не указано, то битность по умолчанию.
// Первая 8 - начальный размер списка. Вторая 8 –
// на сколько увеличить список, если он переполнится
// Загружаем пиктограмму из ресурса
hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
myList. Add(hIcon); // Добавляем иконку
Графический список. Этот элемент является продолжением элемента список. Для добавления к нему списка изображений создается и заполняется список с необходимым количеством изображений, а в функции OnInitDialog вставляется следущий код:
(CListCtrl*) pList=(CListCtrl*)GetDlgItem(IDC_LIST);
pList->SetImageList(&myList, LVSIL_SMALL);
где IDC_LIST – идентификатор элемента управления, myList – список изображений. LVSIL_NORMAL, LVSIL_SMALL, LVSIL_STATE – размер пиктограмм.
Затем вызывается функция InsertItem (номер вставляемого, текст, номер пиктограммы из списка). Например, так:
pGL->InsertItem(0,"One",0);
Свойства элемента:
- View – режимы отображения: маленькие значки, большие значки, список, подробно;
- Sort – сортировка списка;
- Single selection – можно выбирать лишь один элемент из списка;
- Edit Labels – позволяет менять подписи к пиктограммам;
- No Scroll – убирает Scroll Bar;
- No column header – отключает подписи к колонкам;
- No sort header – отключает возможность сортировки при нажатии на заголовок колонки;
- Show selection always – показывает выделенный элемент при потере фокуса ввода;
- Transperent – прозрачное поле.
Расширенный комбинированный список. Этот элемент не просто комбинированный список с картинками, он намного сложнее и интереснее, особено при инициализации вручную. Сначала необходимо собрать список изображений и присоединить его к комбинированному списку:
CComboBoxEx*) pCBox = (CComboBoxEx*) GetDlgItem(IDC_COMBOEX);
pCBox->SetImageList(&myList);
Затем, заполняя поля структуры COMBOBOXITEM, вставляются элементы и назначаются им рисунки. Стоить заметить, что с каждым элементом могут сопоставляться три рисунка – в выбранном, невыбранном и перекрытом состоянии. Структура COMBOBOXITEM содержит:
- mask – набор флагов для отображения элементов;
- iItem – номер вставляемого элемента;
- pszText – указатель на вставляемый текст;
- cchTextMax – максимальный размер текста в списке;
- iImage – номер рисунка в списке изображений, используемый для невыбранного состояния;
- iSelectedImage – номер рисунка в списке изображений, используемый для выбранного состояния;
- iOverlay – номер рисунка в списке изображений, используемый для перекрытого состояния;
- iIndent – отступ от левого края списка.
Если нужно изменить стили уже вставленных элементов, то заполняется структура, а затем выбирается элемент с помощью функции GetItem и выполняется для него функция SetItem.
Древовидный список. Все видели древовидный список (например, на панели Windows Explorer – Проводнике Windows). Его создание немного сложнее, чем создание графического списка. Сначала необходимо подготовить список изображений, но он не обязательно должен быть размером с сам древовидный список. Затем необходимо добавлять узлы (node) и листья (leaf) в список. Пока к элементу не добавлена ветка, он считается листом, в противном случае можно щелкнуть на крестике рядом с ним или двойным щелчком на нем самом открыть его ветку. Для вставки ветви необходимо заполнить структуру TV_INSERTSTRUCT со следущими полями:
- hParent – указатель на узел, куда вставляем ветвь NULL для корня;
- hInsertAfter – куда вставляем:
1) TVI_FIRST – в начало ветви;
2) TVI_LAST – в конец ветви;
3) TVI_ROOT – в корень;
4) TVI_SORT – сортировка;
- item – структура, где описывается вставляемый элемент:
1) mask – набор флагов для отображения элемента;
2) hItem – куда ссылаемся;
3) state – состояние;
4) stateMask – маска состояния;
5) pszText – указатель на вставляемый текст;
6) cchTextMax – размер вставляемого текста;
7) iImage – номер рисунка в структуре CImageList;
8) cChildren – количество дочерних элементов (при инициализации указывайте 0, потом это поле можно считывать).
Не обязательно заполнять все поля каждый раз. Можно заполнить основные поля единственный раз, а потом менять только вставляемый текст и рисунок.
Свойства элемента:
- Has buttons – отображает кнопки «плюс» и «минус» слева от узла;
- Has lines – проводит пунктирные линии от узлов к листьям;
- Edit Labels – позволяет менять подписи к пиктограммам;
- Show selection always – показывает выделенный элемент при потере фокуса ввода;
- Check boxes – добавляет флажки для выбора веток;
- Full row select – можно выделять целую ветку;
- Info tip – всплывающая подсказка при наведении мышки;
- Single expand – если открывается какая-либо ветвь, остальные открытые ветви закрываются.
Календарь. Элемент управления календарь позволяет выбирать дату. С ним связывается переменная типа CMonthCalCtrl, из которой можно читать поля данных и узнавать выбранный день. Элемент посылает сообщение MCN_SELCHANGE при смене даты.
Свойства элемента:
- Day State – позволяет отображать некоторые даты жирным шрифтом;
- Milti select – разрешено выбирать несколько дат;
- No today circle – не обводит текущую дату кружком;
- No taday – включает / выключает отображение текущей даты по умолчанию;
- Week numbers – также показывает и номера недель.
Выбор даты/времени. Этот элемент управления служит для выбора текущей даты или текущего времени в зависимости от указанных стилей. С ним сопоставляется переменная типа CDateTimeCtrl, которая обеспечивает чтение данных из элемента.
Свойства элемента:
- Format – указывает на назначение элемента: ввод даты или ввод времени;
- Use spin control – способ выбора даты или наборным счетчиком, или открытием окона с календарем;
- Show none – позволяет не выбирать никакую дату;
- Allow edit – ручное редактирование даты.
Задание № 4. Создайте программу для диалогового окна, показанного на рис. 12.
4.7. Немодальные диалоговые окна
Немодальным диалоговым окнам сопостовляется тот же класс CDialog, но так как после создания они должны существовать отдельно от родительского окна, то следить за окном должен программист и от него зависит, когда уничтожить объект. Модальное окно создается командой DoModal() и ждет его завершения. Немодальное окно создается функцией Create(), которая получает ресурс окна, создает его и сразу же передает управление в главное окно.
Скорее всего, уничтожить диалоговое окно необходимо будет нажатием кнопок в самом диалоговом окне, но этим процессом должно заниматься главное окно приложения. Но как родитель узнает о том, что происходит в его потомке? Можно, конечно, сделать классы дружественными и просто обращаться друг к другу напрямую, но это создает массу дополнительных проблем. Лучший способ – это послать сообщение из диалогового окна в главное. Но какое сообщение? Никакое из стандартных сообщений не подходит, поэтому программист должен сам создать свое сообщение и послать его.
Далее на примере создания простого диалогового окна с полем ввода будет показана процедура создания немодального диалогового окна (рис. 14).

Рис. 14. Немодальное диалоговое окно
1. Создается новый MFC-проект с именем Modeless.
2. В редакторе создается простое окно, все идентификаторы оставляются без изменений. Обязательно устанавливается свойство «Visible».
3. В менеджере классов окна сопоставляется класс CModeless и добавляется к полю ввода переменная CString m_text.
4. Чтобы была возможность воспользоваться окнами, надо создать в каждом из них указатель на другое окно. В Modeless1.h в объявлении класса вставляются следущие строки:
private:
CView *m_pView;
public:
CModeless(CView *pView);
BOOL Create();
Так создается у диалогового окна указатель на родительское окно. Заодно здесь добавлены прототипы будущих функций для работы с окном.
5. Теперь надо определить функции в файле Modeless1.cpp:
CModeless::CModeless(CView* pView)
{
m_pView=pView;
}
BOOL CModeless::Create()
{
return CDialog::Create(CModeless::IDD);
}
Конструктор получит и запомнит указатель на родительское окно, а функция Create() вызывает функцию базового класса с указателем на окно (можно было и не определять эту функцию, но это приведет к проблеме при смене названия окна).
6. В объявление класса ModelessView в файле ModelessView. h добавляются переменные:
private:
CModeless* m_pDlg;
и перед объявлением класса:
class CModeless;
7. Теперь в файле ModelessView. cpp заменяются конструктор и деструктор класса CModelessView:
CModelessView::CModelessView()
{
m_pDlg=new CModeless(this);
}
CModelessView::~CModelessView()
{
delete m_pDlg;
}
После этого класс окна знает своего потомка.
8. Затем добавляется пункт в меню и в его обработчике записываются следущие строки:
if(m_pDlg->GetSafeHwnd()==0)
m_pDlg->Create();
В этом коде проверяется, есть ли окно на экране. Если его нет, то оно создается.
9. Если попытаться запустить приложение, то окно не должно открыться. Причина в том, что при закрытии окна из стандартных функций OnOK и OnCancel вызывается команда EndDialog, которая подходит лишь для модальных окон, немодальные должны вызывать DestroyWindow.
10. Вставляем в файл Modeless1.h строку
#define WM_GOODBYE WM_USER+5
Так определяется собственное сообщение. WM_USER – первое возможное пользовательское сообщение. Некоторые из них использует библиотека MFC, поэтому пропускаются первые пять.
11. Через ClassWizard изменяются обработчики кнопок «OK» и «Cancel»
void CModeless::OnOK()
{
// TODO: Add extra validation here
if (m_pView!=NULL)
m_pView->PostMessage(WM_GOODBYE, IDOK);
else
CDialog::OnCancel();
}
void CModeless::OnCancel()
{
if(m_pView!=NULL)
m_pView->PostMessage(WM_GOODBYE, IDCANCEL);
else
CDialog::OnCancel();
}
Если окно немодальное, то вместо уничтожения посылается сообщение родительскому окну.
12. Теперь в родительском окне необходимо создать обработчик WM_GOODBYE. С помощью менеджера классов он не создается, его можно создать только вручную. В файл ModelessView. cpp между строками AFX_MESSAGE_MAP вставляем
ON_MESSAGE(WM_GOODBYE, OnGoodbye)
Добавляем саму функцию OnGoodBye в конец того же файла:
LRESULT CModelessView::OnGoodbye(UINT wParam, LONG lParam)
{
m_pDlg->DestroyWindow();
if (wParam==IDOK)
MessageBox("Вы нажали OK");
else
MessageBox("Вы нажали Cancel");
return 0L;
}
Наконец, в файле ModelessView. h вставляем прототип функции:
afx_msg LRESULT OnGoodbye(UINT wParam, LONG lParam);
Задание № 5. Создайте программу для своего собственного немодального окна.
4.8. Стандартные диалоговые окна
Стандартные диалоговые окна – это окна, предназначенные для часто используемых действий. Все они производные от класса CDialog. Вот их список:
- CColorDialog – выбор цвета из палитры;
- CFileDialog – открытие / сохранение файла;
- CFindReplaceDialog – поиск / замена текста;
- CFontDialog – выбор шрифта;
- CPageSetupDialog – настройка параметров страницы документа для печати;
- CPrintDialog – выбор принтера.
Все окна, кроме CFindReplaceDialog, модальные, то есть достаточно завести соответствующую переменнную класса, а затем вызывать функцию DoModal.
Диалоговое окно выбора цвета создается с помощью конструктора и функции DoModal:
CColorDialog cDlg(RGB(0,255,100),CC_RGBINIT, this);
cDlg. DoModal();
Первым задается начальный цвет в палитре RGB, затем внешний вид и третьим параметром – указатель на родительское окно.
Внешний вид может быть следующим:
- CC_FULLOPEN – при открытии окна сразу доступна полная палитра;
- CC_PREVENTFULLOPEN – нет кнопки, открывающей полную палитру;
- CC_RGBINIT – устанавливает начальный цвет;
- CC_SHOWHELP – кнопка помощи – «?» является доступной.

Рис. 15. Два внешних вида диалогового окна «Цвет»
Для получения цвета используется функция GetColor().
Диалоговое окно открытия / сохранения файла (рис. 16) создается аналогично диалоговому окну выбора цвета:
CFileDialog fDlg(FALSE, "*.txt","Document", OFN_HIDEREADONLY |
OFN_OVERWRITEPROMPT,"Text|*.txt|",this);
fDlg. DoModal();
Первый аргумент в функции fDlg() указывает на тип окна (TRUE – окно открытия файла, FALSE – окно сохранения файла). Следующие два аргумента – это расширение и имя файла по умолчанию. Затем идет аргумент вида окна. Предпоследний аргумент указывает строку фильтра, последний является указателем на родительское окно.
Виды окна:
- OFN_ALLOWMULTISELECT – разрешает выбор многих файлов;
- OFN_CREATEPROMPT – подтверждение, если выбран несуществующий файл;
- OFN_DONTADDTORECENT – не добавляет файл в список недавно используемых документов;
- OFN_EXPLORER – окно в стиле проводника;
- OFN_FILEMUSTEXIST – отображает только существущие файлы;
- OFN_HIDEREADONLY – не показывает файлы с атрибутом «только для чтения»;
- OFN_NOCHANGEDIR – восстанавливает внешний вид папки, если пользователь создал папку, а потом нажал кнопку «Отмена»;
- OFN_NONETWORKBUTTON – скрывает кнопку «Сетевое окружение»;
- OFN_SHOWHELP – кнопка помощи – «?» является доступной.
Формат строки фильтра:
Тип файла 1 | Сопоставляемое расширение 1;
Ещё расширение | Тип файла 2 | Сопоставляемое расширение 2
|...Тип файла_n | Сопоставляемое расширение_n ||
Тип файла – это то, что увидит пользователь, а расширение будет обрабатываться самой программой. Все данные отделяются знаком |. А расширения (если их несколько) – ; (точка с запятой). В конце стоит знак – || (две черты).

Рис. 16. Внешний вид диалогового окна «Открыть»
С помощью функций GetPathName(), GetFileName(), GetFileExt() можно узнать путь к файлу, имя файла, расширение файла. Файл открывается с помощью функции CFile::Open().
Окно выбора шрифта (рис. 17) можно создать без всяких параметров:
CFontDialog cFD;
cFD. DoModal();
Но при создании можно установить начальный шрифт, используя указатель на струкутуру LOGFONT, которая будет содержать все параметры начального шрифта; параметры окна; указатель на контекст принтера; указатель на родительское окно.
Возможные параметры окна:
- CF_APPLY – отображает кнопку «Применить»;
- CF_BOTH – отображает шрифты для экрана и печати;
- CF_TTONLY – отображает только шрифты «True Type»;
- CF_EFFECTS – позволяет изменять начертание шрифта (цвет, жирность, подчеркивание и т. п.);
- CF_NOVECTORFONTS – запрет на векторные шрифты;
- CF_PRINTERFONTS – отображает только шрифты для печати;
- CF_SCALABLEONLY – отображает только масштабируемые шрифты;
- CF_SCREENFONTS – отображает только экранные шрифты;
- CF_SHOWHELP – кнопка помощи – «?» является доступной.

Рис. 17. Внешний вид диалогового окна «Шрифт»
Получить шрифт можно с помощью функции GetCurrentFont (указатель на структуру LOGFONT). Характеристики шрифта получают с помощью функций: GetFaceName(), GetStyleName(), GetSize(), GetColor(), GetWeight(), IsStrikeOut(), IsUnderline(), IsBold(), IsItalic().
Задание № 6. Создайте программу, отображающую три стандартных диалоговых окна.
4.9. Содержание отчета
Отчет по лабораторной работе представляет собой распечатку созданных четырех программ (задания № 2, 4–6) с комментариями. Первая программа – отображение диалогового окна, вторая программа – диалоговое окно с элементами управления, третья программа – немодальное диалоговое окно, четвертая программа – отображение стандартных диалоговых окон.
Также в отчет рекомендуется включить необходимые скриншоты созданных программ. Отчет должен быть подготовлен с помощью Microsoft Word и содержать титульный лист установленного образца.
4.10. Контрольные вопросы
1. Дайте определение понятию «ресурс».
2. Что такое модальное диалоговое окно?
3. Что такое немодальное диалоговое окно?
4. Что такое стандартное диалоговое окно?
5. Как создается пользовательское диалоговое окно?
6. Перечислите не менее 7 пользовательских элементов управления.
7. Какие свойства есть у элемента «Список»?
8. Какие свойства есть у элемента «Рисунок»?
9. Какие свойства есть у элемента «Кнопка»?
10. Какие свойства есть у элемента «Флажок»?
11. Какие свойства есть у элемента «Поле ввода»?
12. Какие свойства есть у элемента «Переключатель»?
13. Опишите процедуру создания немодального диалогового окна.
14. Поясните общий принцип работы со стандартными диалоговыми окнами.
15. Какие виды кнопок существуют?
16. Как задать порядок обхода элементов?
17. Как осуществляется обмен данными с диалоговым окном?
18. Как создается пользовательское сообщение?
19. Как осуществляется связь родительского окна с немодальным диалоговым окном?
20. Перечислите виды стандартных диалоговых окон.
4.11. Задачи на самостоятельную работу
1. Создайте программу, содержащую два модальных диалоговых окна, в одном из которых устанавливаются и вводятся параметры (по два параметра), а во втором выводится результат расчета по любым математическим формулам в виде списка (задача простой сложности – программа описана в литературе).
2. Создайте программу, содержащую диалоговое окно для работы с базой данных (задача простой сложности – программа описана в литературе).
3. Создайте программу, демонстрирующую наглядное копирование документов из одного диалогового окна в другое – копирование с помощью мыши (задача средней сложности – различные части программы описаны в литературе).
4. Создайте программу, которая включает в себя диалоговое окно с внедренным объектом – Internet Explorer для просмотра HTML-файлов (задача повышенной сложности – различные части программы опубликованы в Интернете).
4.12. Методика проведения лабораторной работы № 3
Лабораторная работа № 3 проводится на пяти занятиях. Перед её началом студенты должны ознакомиться с текстом лабораторной работы (пп. 4.1–4.9).
Занятие № 1 (2 аудиторных часа). Изучение теоретического материала по пп. 4.1–4.5. Подготовка ответов на контрольные вопросы.
Занятие № 2 (2 аудиторных часа). Изучение теоретического материала по п. 4.6. Подготовка ответов на контрольные вопросы. Выполнение заданий № 1, 2. Подготовка отчета по п. 4.9.
Занятие № 3 (2 аудиторных часа). Изучение теоретического материала по пп. 4.7–4.9. Подготовка ответов на контрольные вопросы. Выполнение заданий № 3, 4. Подготовка отчета по п. 4.9.
Занятие № 4 (2 аудиторных часа). Выполнение задания № 5. Подготовка отчета по п. 4.9.
Занятие № 5 (2 аудиторных часа). Выполнение задания № 6 и подготовка отчета по п. 4.9. Защита отчета по лабораторной работе.
Повышение рейтинговой оценки за лабораторную работу возможно при выполнении одного из заданий п. 4.11 во внеаудиторное время.
Список рекомендуемой Литературы
1. Мешков, А. Visual C++ и MFC [Текст] / А. Мешков, Ю. Тихомиров. – СПб: BHV – Санкт-Петербург, 1997. – 1040 c.
2. Олафсен, Ю. MFC и Visual C++ 6 [Текст] / Ю. Олафсен, К. Скрайбнер, . – СПб: ДиаСофтЮП, 2004. – 980 с.
3. Шилдт, Г. MFC: основы программирования [Текст]: пер. с англ. и под ред. / Г. Шилдт. – Киев: BHV, 1997. – 556 с.
СОДЕРЖАНИЕ
Введение............................................................................................................3
1. Основы программирования под Windows 4
1.1. Что такое MFC?. 4
1.2. Многозадачность в Windows. 5
1.3. Взаимодействие программ и Windows. 5
1.4. Основы программирования под Windows. 6
1.5. Типы данных в Windows. 6
1.6. Соглашение об использовании имен. 7
1.7. Иерархия классов MFC.. 8
1.8. Глобальные функции и функции-члены в MFC.. 9
1.9. Файл AFXWIN. H.. 9
1.10. Контрольные вопросы.. 10
2. Лабораторная работа № 1. Создание простых приложений Windows 11
2.1. Каркас MFC-программы.. 11
2.2. Подробнее о создании масштабируемых окон. 16
2.3. Содержание отчета. 19
2.4. Контрольные вопросы.. 19
2.5. Задачи на самостоятельную работу. 20
2.6. Методика проведения лабораторной работы №1. 20
3. Лабораторная работа № 2. Обработка сообщений 21
3.1. Что такое сообщения?. 21
3.2. Обработка сообщений в MFC.. 22
3.3. Включение макрокоманд в очередь сообщений. 22
3.4. Включение обработчиков сообщений в описание класса. 23
3.5. Обработка сообщений от клавиатуры.. 24
3.6. Контекст устройства. 27
3.7. Обработка сообщения WM_PAINT.. 28
3.8. Обработка сообщений мыши. 31
3.9. Генерация сообщения WM_PAINT.. 33
3.10. Обработка сообщения WM_DESTROY.. 36
3.11. Обработка сообщений таймера. 36
3.12. Основные типы сообщений Windows. 39
3.13. Содержание отчета. 46
3.14. Контрольные вопросы.. 46
3.15. Задачи на самостоятельную работу. 47
3.16. Методика проведения лабораторной работы № 2. 47
4. Лабораторная работа № 3. Диалоговые окна 48
4.1. Ресурсы.. 48
4.2. Виды диалоговых окон. 48
4.3. Создание диалогового окна в редакторе ресурсов. 49
4.4. Модальные диалоговые окна. 51
4.5. Обмен данными с диалоговым окном.. 52
4.6. Элементы диалогового окна и их свойства. 54
4.7. Немодальные диалоговые окна. 69
4.8. Стандартные диалоговые окна. 72
4.9. Содержание отчета. 75
4.10. Контрольные вопросы.. 75
4.11. Задачи на самостоятельную работу. 75
4.12. Методика проведения лабораторной работы № 3. 76
Список рекомендуемой литературы 77
Олег Олегович Привалов
Илья Викторович Степанченко
ЛАБОРАТОРНЫЙ ПРАКТИКУМ ПО MFC
Учебное пособие
Редактор
Темплан 2007 г., поз. № 31.
Лицензия ИД № 000 от 01.01.01 г.
Подписано в печать г. Формат 60×84 1/16.
Бумага листовая. Печать офсетная.
Усл. печ. л. 5,0. Усл. авт. л. 4,81.
Тираж 100 экз. Заказ №
Волгоградский государственный технический университет
400131 Волгоград, просп. им. , 28.
РПК «Политехник»
Волгоградского государственного технического университета
400131 Волгоград, ул. Советская, 35.
![]() |
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 |



