0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 14

Перемещение строки в редакторе, перевод с C#

07.12.2012, 14:15. Показов 1174. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
using System;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
 
delegate void Del(int x, int y);
delegate void Del2(int q, int w, int e);
class First : Form
{
    TextBox tx1;
    public event Del2 eb;
    int m, n, u, v, t = 1;
 
    public First()
    {
        Text = "";
        Size = new Size(500, 500);
        tx1 = new TextBox();
        tx1.Text = "";
        tx1.Location = new Point(10, 435);
        tx1.Size = new Size(100, 30);
        this.Controls.Add(tx1);
    }
 
    protected override void OnPaint(PaintEventArgs args)
    {
        base.OnPaint(args);
        m = this.Width;
        n = this.Height;
        args.Graphics.DrawString(tx1.Text, new Font("Arial", 14),
new SolidBrush(Color.Blue), u, v);
        SetStyle(ControlStyles.UserPaint |
        ControlStyles.AllPaintingInWmPaint |
        ControlStyles.OptimizedDoubleBuffer |
        ControlStyles.ResizeRedraw, true);
        Invalidate();
    }
 
    protected override void OnMouseDown(MouseEventArgs args)
    {
        t += 2;
    }
    public void Hand(int x, int y)
    {
        u = x;//поместить в u значение присланной из 2-го окна переменной x
        v = y;//поместить в v значение присланной из 2-го окна переменной y
        if (eb != null) eb(t, m, n);//послать t,m,n в другое окно
    }
}
class Second
{
    public event Del ev;
    Thread thread;
    bool life = true;
    public int x, y, d, a, b;
    public Second()
    {
        x = 10;
        y = 50;
        thread = new Thread(new ThreadStart(Run));
        thread.Start();
    }
    public void Run()
    {
        while (life)
        {
            x += d; y += d;
            if (x >= a)
            {
                x = 0;
                y = 0;
            }
            if (y >= b)
            {
                y = 0;
                x = 0;
            }
            if (ev != null) this.ev(x, y);//послать координату текста x и y в другое окно
            Thread.Sleep(10);
        }
    }
    public void Hand(int t, int m, int n)
    {
        d = t;//поместить в d значение присланной из 1-го окна переменной t 
        a = m;//поместить в a значение присланной из 1-го окна переменной m
        b = n;//поместить в b значение присланной из 1-го окна переменной n 
    }
    public void Stop()
    {
        life = false;
    }
}
class popca
{
    static void Main()
    {
        Second s = new Second();
        First f = new First();
        s.ev += new Del(f.Hand);
        f.eb += new Del2(s.Hand);
        Application.Run(f);
    }
}
Задание на всякий случай:
Программа содержит один объект без потока, представленный окном, и другой объект без окна, но с выполняющимся потоком. Эти объекты связаны друг с другом с помощью событий.
Окно содержит текстовый редактор и в нём по диагонали поток объекта без окна перемещает строку из этого редактора. При нажатии на клавишу мыши в окне скорость перемещения увеличивается.
P.S. Помогите плиз.Очень буду благодарен... На С# написал, а на С++ не могу.=(
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.12.2012, 14:15
Ответы с готовыми решениями:

Перемещение курсора в текстовом редакторе
Есть задача - создать текстовой редактор, с дополнительным условием : Добавить команды табуляции по словам: -Shift+Вправо...

Перемещение камеры, как в редакторе unity в окне Scene
Всем привет! Подскажите, пожалуйста, как реализовать точно такое же перемещение камеры как в самом unity в окне Scene, когда мы зажимаем...

Перемещение массовое перемещение значений из столбцов в строки
Добрый день, подскажите пожалуйста каким образом можно сделать следующее перемещение данных: http://********/YmEv7g9HwM7q62

4
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
07.12.2012, 15:16
Killman, Нужно на С++/CLI или на С++ с использованием MFC/WINApi/Qt?
0
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 14
08.12.2012, 09:43  [ТС]
C++, CLR Console application, где .сpp, я половинку перевёл. Вот тут что-то поделал, но встрял.
ref class Second
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
ref class Second 
{
public: event Del^ev;
private:Thread^thread;
private:bool life;
public: int x, y, d, a, b;
    Second()
    {
        x = 10;
        y = 50;
        thread = new Thread(new ThreadStart(Run));
        thread.Start();
    }
  void run()
    {
        while (life)
        {
            x += d; y += d;
            if (x >= a)
            {
                x = 0;
                y = 0;
            }
            if (y >= b)
            {
                y = 0;
                x = 0;
            }
            if (ev != null) this.ev(x, y);//послать координату текста x и y в другое окно
            Thread.Sleep(10);
        }
    }
    void Hand(int t, int m, int n)
    {
        d = t;//поместить в d значение присланной из 1-го окна переменной t 
        a = m;//поместить в a значение присланной из 1-го окна переменной m
        b = n;//поместить в b значение присланной из 1-го окна переменной n 
    }
    void Stop()
    {
        life = false;
    }
}
class popca
{
    static void Main()
    {
        Second s = new Second();
        First f = new First();
        s.ev += new Del(f.Hand);
        f.eb += new Del2(s.Hand);
        Application.Run(f);
    }
}
Добавлено через 5 минут
А вот, что в целом изменил, вроде первая половина правильная, а вот дальше не знаю.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include "stdafx.h"
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>
using namespace System;
using namespace System::Threading;
using namespace System::Drawing;
using namespace System::Windows::Forms;
 
delegate void Del(int x, int y);
delegate void Del2(int q, int w, int e);
ref class First : public Form
{
private:TextBox ^tx1;
public:event Del2 ^eb;
public:int m, n, u, v, t;
 
public:  First()
    {
        Text = "";
        Size = Drawing::Size(500, 500);
        tx1 = gcnew TextBox();
        tx1->Text = "";
        tx1->Location = Drawing::Point(10, 435);
        tx1->Size = Drawing::Size(100, 30);
        Controls->Add(tx1);
    }
 
protected:  virtual void OnPaint(PaintEventArgs^args) override
    {
        Form::OnPaint(args);
        m = Width;
        n = Height;
        args->Graphics->DrawString(tx1->Text,gcnew Drawing::Font("Arial", 14),
            gcnew SolidBrush(Color::Blue), u, v);
        SetStyle(ControlStyles::UserPaint |
            ControlStyles::AllPaintingInWmPaint |
            ControlStyles::OptimizedDoubleBuffer |
            ControlStyles::ResizeRedraw, true);
        Invalidate();
    }
 
protected:  void OnMouseDown(MouseEventArgs args)
    {
        t += 2;
    }
public: void Hand(int x, int y)
    {
        u = x;//поместить в u значение присланной из 2-го окна переменной x
        v = y;//поместить в v значение присланной из 2-го окна переменной y
        if (eb != null) eb(t, m, n);//послать t,m,n в другое окно
    }
}
 
ref class Second 
{
public: event Del^ev;
private:Thread^thread;
private:bool life;
public: int x, y, d, a, b;
    Second()
    {
        x = 10;
        y = 50;
        thread = new Thread(new ThreadStart(Run));
        thread.Start();
    }
  void run()
    {
        while (life)
        {
            x += d; y += d;
            if (x >= a)
            {
                x = 0;
                y = 0;
            }
            if (y >= b)
            {
                y = 0;
                x = 0;
            }
            if (ev != null) this.ev(x, y);//послать координату текста x и y в другое окно
            Thread.Sleep(10);
        }
    }
    void Hand(int t, int m, int n)
    {
        d = t;//поместить в d значение присланной из 1-го окна переменной t 
        a = m;//поместить в a значение присланной из 1-го окна переменной m
        b = n;//поместить в b значение присланной из 1-го окна переменной n 
    }
    void Stop()
    {
        life = false;
    }
}
class popca
{
    static void Main()
    {
        Second s = new Second();
        First f = new First();
        s.ev += new Del(f.Hand);
        f.eb += new Del2(s.Hand);
        Application.Run(f);
    }
}
Добавлено через 17 часов 51 минуту
Помогите пожалуйста, скоро сдавать.=(
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
08.12.2012, 13:00
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include "stdafx.h"
#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
using namespace System;
using namespace System::Windows::Forms;
using namespace System::Threading;
using namespace System::Drawing;
 
 
 
delegate void Del(int x, int y);
delegate void Del2(int q, int w, int e);
ref class First : Form
{
    TextBox^ tx1;
public:     Del2^ del;
            event Del2^ E
            {
               public:
                  void add( Del2^ _del ) {
                     del += _del;
                  }
 
               protected:
                  void remove( Del2^ _del ) {
                     del -= _del;
                  }
 
                  void raise( int q, int w, int e) {
                          if ( del )
                           del(q,w,e);  
                        }
            }
    int m, n, u, v, t;
 
public: First()
    {
        del = nullptr;
        t = 1;
        Text = "";
        this->Width = 500;
        this->Height = 500;
        tx1 = gcnew TextBox();
        tx1->Text = "";
        tx1->Location =  Point(10, 435);
         tx1->Width = 100;
         tx1->Height = 30;
        this->Controls->Add(tx1);
        this->MouseDown +=  gcnew MouseEventHandler(this,&First::FirstMouseDown);
    }
 
protected: virtual void  OnPaint(PaintEventArgs^ args) override //= base::OnPaint(args);
    {
        Graphics^ g = args->Graphics;
        System::Drawing::Font^ font =  gcnew System::Drawing::Font("Arial", 14);
        m = this->Width;
        n = this->Height;
        g->Graphics::DrawString(tx1->Text,font,Brushes::Blue, u, v);
        SetStyle(ControlStyles::UserPaint |
        ControlStyles::AllPaintingInWmPaint |
        ControlStyles::OptimizedDoubleBuffer |
        ControlStyles::ResizeRedraw, true);
        Invalidate();
    }
 
private : void FirstMouseDown(System::Object^, MouseEventArgs^ args) 
    {
        t += 2;
    }
public: void Hand(int x, int y)
    {
        u = x;//поместить в u значение присланной из 2-го окна переменной x
        v = y;//поместить в v значение присланной из 2-го окна переменной y
        if (del != nullptr) del(t, m, n);//послать t,m,n в другое окно
    }
};
ref class Second
{
    Thread^ thread;
    bool life ;
public: int x, y, d, a, b;
        Del^ del;
            event Del^ E
            {
               public:
                  void add( Del^ _del ) {
                     del += _del;
                  }
 
               protected:
                  void remove( Del^ _del ) {
                     del -= _del;
                  }
 
                    private:
      void raise( int x, int y) {
         if ( del )
            del(x,y);
      }
            }
public: Second()
    {
        del = nullptr;
        x = 10;
        y = 50;
        life = true;
        thread = gcnew Thread(gcnew ThreadStart(this,&Second::Run));
        thread->Start();
    }
public: void Run()
    {
        while (life)
        {
            x += d; y += d;
            if (x >= a)
            {
                x = 0;
                y = 0;
            }
            if (y >= b)
            {
                y = 0;
                x = 0;
            }
            if (del) this->del(x, y);//послать координату текста x и y в другое окно
            Thread::Sleep(10);
        }
    }
public: void Hand(int t, int m, int n)
    {
        d = t;//поместить в d значение присланной из 1-го окна переменной t 
        a = m;//поместить в a значение присланной из 1-го окна переменной m
        b = n;//поместить в b значение присланной из 1-го окна переменной n 
    }
public: void Stop()
    {
        life = false;
    }
};
 
int main(array<System::String ^> ^args)
    {  
      Second^ s = gcnew Second();
        First^ f = gcnew First();
       f->E += gcnew Del2(s, &Second:: Hand);
       s->E += gcnew Del(f, &First:: Hand);
       Application::Run(f);     
    }
1
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 14
08.12.2012, 16:29  [ТС]
Огромное спасибо...!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.12.2012, 16:29
Помогаю со студенческими работами здесь

Заменить в строке все пробелы на перевод строки, а перевод строки изменить на два перевода
Меня интересует следующий вопрос: как заменить в моем стринге все пробелы на переходы на новую строку, а переходы на новую строку изменить...

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

Номер строки в редакторе
У меня с англ плоховато, потому прошу, подскажите как выставить, чтобы видно было номер строки в редакторе?

Ноутбук до 26.000 р. для работы в графическом редакторе или видео-редакторе
Так же для работы в Cubase. Я понимаю, что для работы с графикой, рендеренгом видео, необходима мощность процессора. Что лучше,...

Как отредактировать файл специального формата в текстовом редакторе или редакторе кодов?
Привет специалистам! Я - программист СУБД и не могу решить указанную задачу. Как отредактировать файл специального формата (XLS,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru