Программа расчета трансформаторов построена на C++ библиотеке MFC. Класс class CTransApp : public CWinApp основной класс на котором базируются все остальные оконные классы. Главная форма программы class CTransDlg : public CDialog представляет собой пустое поле. На поверхности главной формы, по желанию пользователя, показываются интерфейсы расчёта сетевого 50 герц либо импульсного трансформаторов. Соответственно, интерфейсы расчета трансформаторов представляют class CTrans50hertz : public CDialog и class CTransPulse : public CDialog. При желании можно добавить любое количество интерфейсов для расчёта других типов трансформаторов.
Для наглядного построения интерфейса использовались диалоговые окна. Работа с диалоговыми окнами напоминает работу в визуальных средах программирования C++Builder и Visual Studio на языках .NET. Каждый создаваемый интерфейс связывается с соответствующим классом, наследуемым от class CDialog.
Дополнительное окно расчётов, для третьего и более видов трансформаторов, создается в редакторе ресурсов. Далее, с помощью контекстного меню формы нового окна создаётся класс связанный с идентификатором данного оконного ресурса.
Для смены интерфейсов выбран способ скрытия и показа окон. Данный способ имеет простейшую логику и мгновенное переключение программы на разные типы трансформаторов.
Смена интерфейсов происходит посредством предварительно задекларированных командных сообщений:
Для управления окнами редактирования и вывода результатов их дескрипторы хранятся в элементах массивов. Это уменьшает количество программного кода для проверки формата вводимых пользователем данных. Для предотвращения утечки памяти, в деструкторе дескрипторы отсоединяются от элементов массива.
BOOL CTrans50hertz::OnInitDialog()
{
...
// Инициализация массива Edit для ввода расчетного
// напряжения на вторичной обмотке
m_EditS_V[0].Attach(GetDlgItem(IDC_EDIT_SV0)->m_hWnd);
...
m_EditS_V[11].Attach(GetDlgItem(IDC_EDIT_SV11)->m_hWnd);
...
// Ввод массива Static для индикации количества витков
// вторичных обмоток.
m_StaticOut_SC[0].Attach(GetDlgItem(IDC_STATIC_SC0)->m_hWnd);
...
m_StaticOut_SC[11].Attach(GetDlgItem(IDC_STATIC_SC11)->m_hWnd);
return TRUE;
}
Файл справки программы - это одна страница HTML. Поскольку в поздних выпусках Windows не поддерживается формат справок .HPL, файл с гипертекстом полноценно заменяет справочную систему MFC. В нашем случае функция ShellExecute открывает идущий файл HTML программой по умолчанию. Файл справки обязательно должен быть в одном каталоге с файлом приложения расчёта трансформаторов.
Для вывода результатов на бумажный носитель разработана функция печати, которая автоматически вычисляет количество окон CEdit и CStatic в которых есть правильные данные. Т.е. пользователь может заполнять окна произвольно, но на печать выйдет только значащие параметры обмоток. Доступ к службам печати получаем посредством class CPrintDialog. Данный класс представляет собой диалоговый оконный интерфейс и включает в себя множество методов настроек печати. Каждый тип трансформаторов имеет собственные настройки для печати.
Требования. Среда программирования Microsoft Visual Studio 2019, установленная библиотека C++ MFC. Если изменить макросы WINVER и _WIN32_WINNT исходники можно открыть другими версиями Visual Studio.
Скачать исходник
Тема: «Исходник программы расчета трансформатора»
transksource_vs16.zip
Размер:181 КбайтЗагрузки:8249