Как нарисовать окно программы

Изменяем проект. Это очень хороший проект. На нем тренироваться и тренироваться.

Создаем код

Нам необходимо переопределить виртуальную функцию прорисовки экрана. Она реализована в виде заглушки afx_msg OnPaint().

class CMainWnd : public CFrameWnd < public: . void MenuSwitch(); // Процедура реакции на выбор пункта меню afx_msg void OnPaint(); // Переопределяем функцию рисования в окне ~CMainWnd(); // Деструктор private: BOOL blMenu; // какое меню активно . >;

Наша программа должна реагировать на события перерисовки экрана.

BEGIN_MESSAGE_MAP(CMainWnd, CFrameWnd) // таблица откликов на сообщения . ON_WM_KEYDOWN() // реакция на нажатие клавиши ON_WM_CREATE() // событие создания окна ON_WM_PAINT() // Это реакция. Если нету этой строчки, бог вам судья. ON_COMMAND(ID_FILE_EXIT,MenuExit) // Вот она, обработка реакции на выбор меню . END_MESSAGE_MAP()

А вот и сама функция:

void CMainWnd::OnPaint() < CPaintDC dc(this); // Получить контекст устройства dc.TextOut(200,200,»Hello MFC Programm»); // Написать в нем привет dc.MoveTo(300,300); // Начать рисовать линию dc.LineTo(600,105); // И продолжить рисовать линию dc.LineTo(105,105); // И еще продолжить рисовать линию >

Вот такое получается окно программы.

Как нарисовать окно в программе ПрофОкна 2000

Описание

При программировании под Windows за работу с графикой отвечает GDI Graphics Divice Interface. Все функции работы с графикой сосредоточенны в gdi32.dll.

В программе не только нужно создать графику, нужен код. Этот код должен отвечать за время, место прорисовки. Главным моментом здесь является сообщение WM_PAINT. Это сообщение посылается окну всегда, когда требуется перерисовка экрана. Например: при изменении размера окна, и если окно выходит на передний план, и при запуске программы естественно.

Внимание . Windows не хранит массивы пикселей для сохранения окон, как это часто делалось при программировании в DOS. При необходимости «освежить окно» — оно перерисовывается и делает это сообщение WM_PAINT.

Для целей графики и близких к ним в Windows есть понятие контекст устройства. Эти контексты не зависят от самого устройства для программиста. Например, на мониторах разных типов команды одинаковы, при этом ВНИМАНИЕ команды рисования на мониторе и принтере тоже одинаковые. С Windows Вас, как программиста, не интересует какой язык использует принтер. А еще недавно я помню, как приходилось штудировать документацию по принтеру и писать драйвера к своим программам под каждый тип принтера.

Читайте также:
Программа проверить сигнал Wi-Fi

Представьте, что вы установили у себя на компьютере новый монитор, и новый принтер, в программе не нужно править ни одного байта, всё будет работать. Кто теперь скажет, что Windows это плохо, а Microsoft не умеет писать программы ?

Первым делом в классе рамки окна мы описали функцию, которая вызывается в ответ на WM_PAINT. Потом в обработчике событий указали, что на это событие реагировать. И написали сам код.

С помощью CPaintDC dc(this); получили контекст нашего окна для рисования. Вывели текст. Установили указатель в точку. Провели линию. Компилируем, запуcкаем на выполнение. Ну прям, как у Пикасо !

Два крутых способа нарисовать окно с цветами #shorts

Давайте посмотрим отдельно, как работает MoveTo() и LineTo().

Функция MoveTo() перемещает курсор к указанной точки без рисования. Функция LineTo() рисует линию от текущего положения до указанного и при этом перемещает курсор к указанному положению. То есть после того, как Вы нарисовали линию с помощью LineTo(), курсор оказывается в конечной точке.

Шпаргалка

Опишите функцию рисования.

class CMainWnd : public CFrameWnd

Создайте реакцию на сообщение.

BEGIN_MESSAGE_MAP(CMainWnd, CFrameWnd) . ON_WM_PAINT() . END_MESSAGE_MAP()

Напишите код рисования.

Источник: firststeps.ru

Рисование окна

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

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

При первом отображении окна вся клиентская область окна должна быть окрашена. Поэтому при показе окна вы всегда будете получать по крайней мере одно WM_PAINT сообщение.

иллюстрация, показывающая область обновления окна

Вы несете ответственность только за рисование клиентской области. Окружающий кадр, включая заголовок окна, автоматически закрашивался операционной системой. Завершив рисование клиентской области, вы очистите регион обновления, который сообщает операционной системе, что ей не нужно отправлять другое сообщение WM_PAINT , пока что-то не изменится.

Читайте также:
Структура научно исследовательской программы лакатоса

Теперь предположим, что пользователь перемещает другое окно, чтобы оно заслоняет часть окна. Когда скрытая часть снова становится видимой, эта часть добавляется в область обновления, и окно получает еще одно сообщение WM_PAINT .

Иллюстрация, показывающая, как изменяется область обновления при перекрытии двух окон

Регион обновления также изменяется, если пользователь растягивает окно. На следующей схеме пользователь растягивает окно вправо. Вновь предоставленная область в правой части окна добавляется в область обновления:

Иллюстрация, показывающая, как изменяется область обновления при изменении размера окна

В нашем первом примере программа рисования очень проста. Он просто заполняет всю клиентская область сплошным цветом. Тем не менее, этого примера достаточно, чтобы продемонстрировать некоторые важные понятия.

switch (uMsg) < case WM_PAINT: < PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, // All painting occurs here, between BeginPaint and EndPaint. FillRect(hdc, EndPaint(hwnd, >return 0; >

Запустите операцию рисования, вызвав функцию BeginPaint . Эта функция заполняет структуру PAINTSTRUCT сведениями о запросе на перерисовку. Текущая область обновления указана в элементе rcPaintpaintSTRUCT. Этот регион обновления определяется относительно клиентской области:

Иллюстрация, показывающая источник клиентской области

В коде рисования есть два основных варианта:

  • Рисование всей клиентской области независимо от размера региона обновления. Все, что находится за пределами области обновления, обрезается. То есть операционная система игнорирует его.
  • Оптимизируйте, рисуя только часть окна в области обновления.

Если вы всегда рисуете всю клиентную область, код будет проще. Однако при наличии сложной логики рисования может быть эффективнее пропустить области за пределами региона обновления.

В следующей строке кода область обновления заполняется одним цветом, используя определенный системой цвет фона окна (COLOR_WINDOW). Фактический цвет, указанный COLOR_WINDOW , зависит от текущей цветовой схемы пользователя.

FillRect(hdc,

Сведения о FillRect не важны для этого примера, но второй параметр дает координаты прямоугольника для заполнения. В этом случае мы передаем весь регион обновления (член rcPaintPAINTSTRUCT). В первом сообщении WM_PAINT должна быть закрашена вся клиентская область, поэтому rcPaint будет содержать всю клиентную область. В последующих сообщениях WM_PAINTrcPaint может содержать прямоугольник меньшего размера.

Функция FillRect является частью интерфейса графических устройств (GDI), который использует графику Windows в течение очень длительного времени. В Windows 7 корпорация Майкрософт представила новый графический механизм с именем Direct2D, который поддерживает высокопроизводительные графические операции, такие как аппаратное ускорение. Direct2D также доступен для Windows Vista через Обновление платформы для Windows Vista и для Windows Server 2008 через Обновление платформы для Windows Server 2008. (GDI по-прежнему полностью поддерживается.)

Читайте также:
Как удалить программу атом с компьютера

Завершив рисование, вызовите функцию EndPaint . Эта функция очищает область обновления, которая сообщает Windows о том, что окно завершило рисование.

Источник: learn.microsoft.com

Скачать бесплатно Winplast 1.94

Оконный проектировщик Winplast

Winplast – это программа для составления схемы пластиковых окон и дверей. В последующем схема формируется в полноценный заказ, в котором можно указать количество и стоимость материалов: фурнитуры, пластика, расходных материалов и т. д.

Создание схемы в Winplast начинается с оформления нового заказа. После этого открывается конструктор окон. В нем вы можете выбрать один из стандартных типов конструкций (например, глухарь, простое окно, дверь и т. д.) и изменить ее по своему усмотрению. Вы указываете размеры рамы, тип стеклопакета, направление открывания, наличие поворотно-откидного механизма и другие технические характеристики. Если вам нужно нестандартное окно, то вы можете добавить его вручную.

С помощью Winplast вы можете создать заказ на производство окна по созданной вами схеме. Вы указываете количество расходных материалов и фурнитуры (саморезы, крепежи, ручки, баллоны с монтажной пеной и т. д.), а программа формирует ведомости и накладные, которые затем можно распечатать. Кроме того, Winplast подсчитывает стоимость окна на основе цены и количества всех материалов, которые использовались при составлении схемы.

Также программа составляет и другие документы, которые необходимы при заказе на производство окна: коммерческое предложение, план порезки окна, документация по сборке, расчет себестоимости и др.

Особенности программы

• Составление схемы пластикового окна или двери.
• Большое количество стандартных схем.
• Расчет количество фурнитуры и расходных материалов.
• Расчет стоимости окна.
• Составление различных документов: коммерческое предложение, план порезки окна и др.
• Интерфейс на русском языке.
• Поддержка Windows XP и выше.

Программу Winplast можно скачать абсолютно бесплатно.

Скачать бесплатно Winplast 1.94

Версия: 1.94
Русский язык: Да
Разработчик: winplast.org.ua
Операционка: Windows 10 / 7 / 8 / XP / Vista
Размер: 3,8 Mb

Источник: besplatnye-programmy.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru