Архив за ‘Visual’ Category

Использование класса CTabCtrl

Tab control — это мощное средство для решению многих проблем в интерфейсе приложений. Оно позволят существенно увеличить скорость работы вашего приложения, разбить на «части» диалог в удобной для пользователя форме.

В MFC есть встроенный класс по работе с Tab control — класс CTabCtrl.

Для практики напишем программу, которая будет использовать класс CTabCtrl и в которой будет три «закладки» — диалога.

Шаги создания проекта:
1) Сначала создадим проект tab_control типа диалог. 2) В редакторе ресурсов добавить Tab Control в шаблон диалога и назначим ему ID = IDC_TAB. 3) Используя ClassWizard, добавим переменную-член типа CTabCtrl со свойством Control. 4) В OnInitDialog проинициализируем необходимые переменные для CTabCtrl. 5) Используя ClassWizard, добавим обработку необходимых сообщений от Tab control ‘я. 6) Удалим за собой ненужные переменные.
(далее…)

Создание собственных ActiveX элементов

1. Введение

Элементов управления ActveX — это файл с расширением ОСХ (например, MyButton.OCX), который вы можете использовать в своем приложении Visual C++. Visual C++ и другие визуальные языки программирования дают вам возможность включить элемент управления ActiveX в свою программу и пользоваться им так же, как и стандартным элементом управления Visual C++. Вы помещаете элемент управления ActiveX в диалоговую панель, задаете его свойства и связываете код с его событиями. После того как ы создали собственный элемент управления ActiveX, вы ожете передавать его другим программистам, которые могут вводить его в свои программы.

Поскольку расширением файла элемента управления ActiveX является .ОСХ, то иногда элементы управления ActiveX называют элементами ОСХ.

В этой главе вы разработаете свой собственный элемент управления ActiveX — MyClock.ОСХ, который выполняет задачу вывода текущего времени. Когда программист помещает элемент управления MyClock.ОСХ в форму или в диалоговую панель, MyClock. ОСХ будет непрерывно отображать текущее время.
(далее…)

Проигрывание Wave-файлов под MFC

1. Введение

В этой главе мы создадим программу, проигрывающую WAVE-файлы. Для начала создадим проектmysoundв диалоговом режиме с использованием MFC. В начало файлаmysoundDlg.cppнадо написать#include , но это не всё, а теперь самое главное( если это не сделать, то будет ошибка при линковании ) :

1. ВыберитеProject ->Settings… —>C/C++ —>Code Generationи поставте Multithreaded DLL
2. Выберите Project ->Settings… —>Link —>Generalи поставте в поле Object/Library modulesбиблиотеку winmm.lib( это очень важно, проверте !!! )
(далее…)

Простая программа, использующая MDI интерфейс

В этом разделе рассматривается программа использующая MDI ( интерфейс многих документов )
Мы создадим программу, в которой документом является графическое изображение — круг. В ToolBar будет создана иконка, при нажатие на которою будет вызываться диалоговое окно, позволяющее изменять координаты круга. Местоположение круга можно будет согранять в файл с расширением CIR.

Создание проекта программы

1. Создайте новый проект( у меня MDI ), использующая MDI интерфейс с поддержкой MFC. Все шесть шагов в MFC AppWizard оставте без изменения.

2. Если вы сделали всё правильно, то создадутся пять классов : CMDIApp, CMainFrame, CChildFrame, CMDIDoc и CMDIView. В классе документов CMDIDocвы пишите код для поддержки данных программы, а в классе представления CMDIView- код, отвечающий за то, что вы видите на экране. Вы будете писать код в функциях-элементах только этих двух классов.
(далее…)

Работа с WinSocket

Socket (гнездо, разъем) — абстрактное программное понятие, используемое для обозначения в прикладной программе конечной точки канала связи с коммуникационной средой, образованной вычислительной сетью. При использовании протоколов TCP/IP можно говорить, что socket является средством подключения прикладной программы к порту (см. выше) локального узла сети.

Socket-интерфейс представляет собой просто набор системных вызовов и/или библиотечных функций языка программирования СИ, разделенных на четыре группы:

1. Локального управления
2. Установления связи
3. Обмена данными (ввода/вывода)
4. Закрытия связи

Ниже рассматривается подмножество функций socket-интерфейса, достаточное для написания сетевых приложений, реализующих модель «клиент-сервер» в режиме с установлением соединения.
(далее…)

Создание собственных диалоговых окон

Для того, что бы создать собственное диалоговое окно надо сделать следующее:

1) Создайте программу в диалоговом режиме ( с поддежкой MFC )
2) Назовите её TEST, что бы было лучше сравнивать с моей рабочей программой
3) Главный класс вашей программы будет CTestDlg
4) Что бы создать другую диалоговую панель нужно создать новый класс, для этого выбери закладку ResourceView ->правой кнопкой на Dialog ->Insert Dialog ->создастся новый диалог.
5) Имя диалога можно менять, поставте IDD_MY_DIALOG (далее…)

Оптимизация вывода графики на экран

1. Описание класса CView

Объекты классаCViewимеют окно, представляющее собой обычную прямоугольную область экрана, без рамки, меню и других элементов. Вывод в такое окно (в том числе и текста) производится в графическом виде. При работе с этим классом очень важны моменты, рассматриваемые ниже.

Сообщение и метод OnDraw

Предположим, в окне отображен какой-либо рисунок, который затем перекрыт другим окном, а через некоторое время верхнее окно сдвигается с рисунка. Если перекрывающее окно небольшое, например, окно меню, то при его закрытии перекрытая часть восстанавливается системой Windows. В большинстве же случаев Windows обращается за помощью к владеющему окном приложению и посылает ему сообщение о необходимости восстановить окно. Дело разработчика приложения, реагировать на это сообщение или нет. Если обработка сообщения не предусмотрена, то велика вероятность исчезновения части рисунка из окна.

Итак, для обеспечения корректного отображения информации в окне нужна функция, которая будет перерисовывать содержимое окна всякий раз, когда оно потребуется. Для этого служит методOnDraw. В качестве параметра этому методу передается указатель на контекст устройства, используя который, можно перерисовать окно.
(далее…)

Стандартные диалоговые панели

1. Введение

В состав библиотеки MFC входит ряд классов, представляющих стандартные диалоговые панели. Эти классы позволяют легко реализовать такие часто используемые операции, как открытие и сохранение файла, выбор цвета, выбор шрифта и т.д. Все эти классы наследуются от CCommonDialog, который в свою очередь является производным по отношению к базовому классу CDialog.

Приведем классы стандартных диалоговых панелей и их назначение:

CColorDialog — Панель для выбора цвета
CFileDialog — Панель выбора файлов для открытия и сохранения на диске
CFindReplaceDialog — Панель для выполнения операции поиска и замены
CFontDialog — Панель для выбора шрифта
CPrintDialog — Панель для вывода документа на печать
CPageSetupDialog — Панель выбора формата документа
COleDialog — Панель для управления технологией OLE
Классы, управляющие стандартными диалоговыми панелями, определены в файле afxdlgs.h. Поэтому при использовании этих классов в приложении необходимо включить этот файл в исходный текст при помощи директивы #include.
(далее…)

Работа с библиотеками динамической компоновки (DLL)

С самого рождения (или чуть позже) операционная система Windows использовала библиотеки динамической компоновки DLL (Dynamic Link Library), в которых содержались реализации наиболее часто применяемых функций. Наследники Windows — NT и Windows 95, а также OS/2 — тоже зависят от библиотек DLL в плане обеспечения значительной части их функциональных возможностей.

Рассмотрим ряд аспектов создания и использования библиотек DLL:

как статически подключать библиотекиDLL;
как динамически загружать библиотекиDLL;
как создавать библиотекиDLL;
как создавать расширения МFCбиблиотекDLL.
Использование DLL

Практически невозможно создать приложение Windows, в котором не использовались бы библиотеки DLL. В DLL содержатся все функции Win32 API и несчетное количество других функций операционных систем Win32.
(далее…)

Работа со стандартными ресурсами

1. Методы класса CButton

HBITMAP GetBitmap() const;

Возвращает дескриптор растрового изображения, сопоставленного кнопке. Если такового не существует, то возвращается NULL.

HBITMAP SetBitmap(HBITMAP hBitmap);

Сопоставляет кнопке растровое изображение. Значением параметра должен быть дескриптор растрового изображения. Правила размещения растрового изображения такие же, как и у значка.

HCURSOR GetCursor();

Возвращает дескриптор курсора, сопоставленного кнопке методом SetCursor. Если у кнопки нет сопоставленного курсора, то возвращается NULL.
(далее…)