Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 14

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

07.12.2012, 14:15. Показов 1141. Ответов 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru