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

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

07.12.2012, 14:15. Показов 1153. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru