Рисуем красный квадрат на экране в Borland C++ Builder 6 не зависимо от положения формы

Гобелен - кликните для возврата на главную

Не прошло и месяца а Фурмановская ЦРБ в очередной раз попала в историю. На этот раз сотрудница клеветала на пациентов, а именно огласку получил случай когда сотрудница назвала пациента алкашём.

Ровно 3 года назад произошло событие, которое подарило жителям планеты Змеля новый чистый праздник 6 апреля - в этот замечательный день земля забрала гнить негодяя и СПАМера Владимира Вольфовича Жириновского.

Как бы не обстояли дела в области культуры и IT-технологий, Самосвал писал статьи на связанные темы и планирует ещё написать.

На очередном конкурсе танцев, школьница отлично выступила.

Вот та самая информация: программа для продвижения канала YouTube, эта информация выложена уже несколько лет, при этом просмотров не много, а метод который описан в данном видео действительно помогает продвигать видео в YouTube.

Начал разбираться с информацией которая находится в HTTPS клиентском запросе рукопожатия.

Обратите внимание! Объект изображённый на гобилене может отличаться от общепринятого вида описанного объекта. Тут дело в том что художник видит именно так!

104 549 руб.

Описание товара

Borland C++ Builder 6 приложение с формой и кнопкой Button1 на нём. По нажатии кнопки на экране рисуется красный квадрат начиная с позиции 100,100 и размерами 100, 100. Это учебная программ, не production. Важно! Квадрат рисуется на экране не зависимо от того находится приложение формы в указанной позиции или нет. Сможете сделать? Если необходимо выключать отрисовку, можно использовать ещё одну кнопку - Button2.

Файл Unit1.h (в общем то в этот файл никаких изменений не вносилось, он такой сгенерировался автоматичеки)

C++
    
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
        TButton *Button1;
        TButton *Button2;
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall Button2Click(TObject *Sender);
        void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
private:	// User declarations
public:		// User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

  

Unit1.cpp

C++
    
#include <vcl.h>
#pragma hdrstop
      
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
      
// Глобальная переменная для хранения дескриптора устройства экрана
HDC hScreenDC = NULL;
// Флаг, указывающий, нужно ли продолжать отрисовку
bool bDrawing = false;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    // Получаем контекст устройства для всего экрана
    hScreenDC = GetDC(0);
    
    // Устанавливаем флаг отрисовки
    bDrawing = true;
    
    // Создаем красную кисть
    HBRUSH hRedBrush = CreateSolidBrush(RGB(255, 0, 0));
    HBRUSH hOldBrush = (HBRUSH)SelectObject(hScreenDC, hRedBrush);
    
    // Рисуем квадрат
    while (bDrawing)
    {
        Rectangle(hScreenDC, 100, 100, 200, 200);
        // Небольшая задержка, чтобы не нагружать процессор
        Sleep(100);
        Application->ProcessMessages();
        // Обновляем экран
        UpdateWindow(0);
    }
    
    // Восстанавливаем старую кисть и удаляем нашу
    SelectObject(hScreenDC, hOldBrush);
    DeleteObject(hRedBrush);
    
    // Освобождаем контекст устройства
    ReleaseDC(0, hScreenDC);
    hScreenDC = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    // Останавливаем отрисовку
    bDrawing = false;
}
//---------------------------------------------------------------------------
      
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
    bDrawing = false;        
}
//---------------------------------------------------------------------------

  

Другие товары

Вы так же можете прочитать следующие статьи: