В приложении C ++ (с использованием C ++ Builder 10.3 и VCL) я использую пользовательский класс, производный от TGraphicControl
, для рисования пользовательского интерфейса и небольшого графика изменения данных.
Все работает хорошо в Windows 10 и Windows 7, но если я выполню приложение в сеансе удаленного рабочего стола (через собственную службу Windows) с каждым перерисовыванием, графика будет еще больше испорчена.
Проблема начинается с исчезающих элементов и неправильных LineTo
конечных точек, но иногда элементы появляются даже в другом диалоге.
Кроме того, при переключении P C с прямого на удаленный доступ динамически вставленные элементы VCL TComboBox
получают недопустимых родителей и владельцев, после чего появляется сообщение об ошибке, что класс TComboBox
неизвестен.
Я использую ClientRect
в своем коде. Возможно, это проблема при работе в удаленных сеансах?
Код, в котором я вижу проблему (она довольно длинная, и у меня возникают проблемы при создании минимального примера без исключения возможных причин проблемы)
cpp : https://pastebin.com/vpk3De7J (художник по строке 228)
заголовок: https://pastebin.com/3pLy4dEY
class CustomTrgDrawings : public TGraphicControl
{
private:
void __fastcall Paint(void);
public:
__fastcall CustomTrgDrawings(TComponent* Owner);
bool updating; //stops painting when true
};
__fastcall CustomTrgDrawings::CustomTrgDrawings(TComponent* Owner)
: TGraphicControl(Owner)
{
updating = true;
}
void __fastcall CustomTrgDrawings::Paint(void)
{
if (!updating)
return;
Canvas->Brush->Color = TColor(0x220022);
Canvas->Brush->Style = bsSolid;
Canvas->Pen->Color = TColor(0x222222);
Canvas->Pen->Style = psSolid;
Canvas->Pen->Width = 1;
Canvas->FillRect(ClientRect);
}
//---insertion in a vcl form
void __fastcall TMyForm::FormCreate(TObject *Sender)
{
//uses TLabel *myLabel as container
CustomTrgDrawings *drg = new CustomTrgDrawings(myLabel);
}