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

Классы, как передать параметры

20.04.2016, 01:33. Показов 1866. Ответов 5

Студворк — интернет-сервис помощи студентам
Ребят всем привет, с++ начал изучать всего 5 дней назад так что извините если вопрос будет глупым или как то непонятно изложен,

суть темы, пишу небольшую програмку через визуал студио тип проэкта windows forms, так вот, допустим мне нужно передать параметр из функции в главном cpp файле в файл формы Form1.h , где нужно поменять текст на лейбле "label5" параметр у лейбла стоит публичный
C++
1
public: System::Windows::Forms::Label^  label5;
, в функции пишу

C++
1
2
Form1 frm;
frm.label5->Text = "test";
но при выполнении ничего не происходит, ошибок при компиляции тоже нету, что не так ребят, подскажите пожалуйста, заранее спс))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.04.2016, 01:33
Ответы с готовыми решениями:

Передача параметров в класс Form()
Здраствуйте, я хочу передать параметр из основной программы в класс Form(), подскажите как это...

Как передать форму в класс в качестве параметра
Вот так передаю, все работает, но форма загружается пустая без компонентов, хотя в конструкторе...

Можно ли сделать поле класса параметром функции-члена этого же класса?
Здраствуйте. ref class MyClass { private: int i, j; array<array<int>^>^ X1; ...

5
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
20.04.2016, 02:00
Цитата Сообщение от SergoMorello Посмотреть сообщение
Ребят всем привет, с++ начал изучать всего 5 дней назад
Хочу вас огорчить - C++/CLI это не C++. Если вы хотите делать GUI с помощью C++ вам надо подобрать подходящую библиотеку.

Цитата Сообщение от SergoMorello Посмотреть сообщение
но при выполнении ничего не происходит, ошибок при компиляции тоже нету
у вас компилируется такой код? Если да, то прикрепите проект.
C#
1
Form1 frm;
Цитата Сообщение от SergoMorello Посмотреть сообщение
так вот, допустим мне нужно передать параметр из функции в главном cpp файле в файл формы Form1.h
вот это можете расшифровать? Если вам нужно что-то куда-то передать у вас(обычно) есть 2 способа сделать это:
1. Потребовать чтобы вызывающая сторона сама запросила посылку, т.е. выполнить вызов функции в методе формы.
2. Реализовать взаимодействие между сторонами таким образом, чтобы посылка передавалась не напрямую, а иным способом, т.е. организовать межпроцессное взаимодействие.
0
 Аватар для SergoMorello
0 / 0 / 0
Регистрация: 19.04.2016
Сообщений: 18
20.04.2016, 02:40  [ТС]
чтобы не запутывать я примером покажу,

эта функция в файле main.cpp
C++
1
2
3
4
    void rasch_gl() {
Form1 frm;
frm.label5->Text = "test";
}
это часть кода Form1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
....
public: System::Windows::Forms::Label^  label5;
...
 
            this->label5->AutoSize = true;
            this->label5->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 8.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
                static_cast<System::Byte>(204)));
            this->label5->Location = System::Drawing::Point(432, 308);
            this->label5->Name = L"label5";
            this->label5->Size = System::Drawing::Size(41, 13);
            this->label5->TabIndex = 18;
            this->label5->Text = L"label5";
эта функция тоже находится в файле Form1.h, она запускает туфункцию которая находится в main.cpp

C++
1
2
3
    public: System::Void rasch(System::Object^  sender,  System::EventArgs^ e) {
                rasch_gl();
}
Добавлено через 2 минуты
да задача абсурдна, но это просто пример, мне надо понять как запускать функции из другово места

Добавлено через 21 минуту
Вот новый проэкт сделал чтобы можно было всё показать, на прошлом просто кода много, вот тут по кнопке "button1" на лейбле должна отрисоватся надпист "test", но этого не происходит, почему?

файл maine.cpp

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
// maine.cpp: главный файл проекта.
 
#include "stdafx.h"
#include "Form1.h"
 
using namespace maine;
 
[STAThreadAttribute]
 
int main(array<System::String ^> ^args)
{
    // Включение визуальных эффектов Windows XP до создания каких-либо элементов управления
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 
 
    // Создание главного окна и его запуск
    Application::Run(gcnew Form1());
    return 0;
}
 
void test() {
Form1 frm;
frm.label1->Text = "test";
 
}

а это Form1.h

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
#pragma once
 
void test();
namespace maine {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
    /// <summary>
    /// Сводка для Form1
    ///
    /// Внимание! При изменении имени этого класса необходимо также изменить
    ///          свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса,
    ///          связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае,
    ///          конструкторы не смогут правильно работать с локализованными
    ///          ресурсами, сопоставленными данной форме.
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  button1;
    protected: 
    public: System::Windows::Forms::Label^  label1;
    private: 
 
    private:
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->label1 = (gcnew System::Windows::Forms::Label());
            this->SuspendLayout();
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(128, 62);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(75, 23);
            this->button1->TabIndex = 0;
            this->button1->Text = L"button1";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
            // 
            // label1
            // 
            this->label1->AutoSize = true;
            this->label1->Location = System::Drawing::Point(148, 129);
            this->label1->Name = L"label1";
            this->label1->Size = System::Drawing::Size(35, 13);
            this->label1->TabIndex = 1;
            this->label1->Text = L"label1";
            // 
            // Form1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(332, 274);
            this->Controls->Add(this->label1);
            this->Controls->Add(this->button1);
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
            this->ResumeLayout(false);
            this->PerformLayout();
 
        }
#pragma endregion
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
             }
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 test();
             }
    };
}
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
21.04.2016, 00:32
Цитата Сообщение от SergoMorello Посмотреть сообщение
да задача абсурдна, но это просто пример, мне надо понять как запускать функции из другово места
абсурдна так как
Цитата Сообщение от SergoMorello Посмотреть сообщение
начал изучать всего 5 дней назад
Я бы был не против если бы это можно было за день освоить, но у меня ушли месяцы.
Событийная система управления очень здорово отличается от линейного потока исполнения. Посмотрите main.cpp повнимательнее и Вы увидите, что обратиться к запущенной форме вы не можете. До Application::Run её ещё нет, а после уже нет.
0
 Аватар для SergoMorello
0 / 0 / 0
Регистрация: 19.04.2016
Сообщений: 18
21.04.2016, 02:57  [ТС]
ребят всем спс за помощь, я разобрался, нужно было в конструкторе указать главное окно, и новые окна вызывать из отдельного файла cpp, ну откуда я мог это знать)) ,
IGPIGP, очень помог ваш пример вот тут Как открыть вторую форму? ,
большое спс, с этим приложением почти закончил, дальше хочу сделать небольшое клиент-сервер приложение для ведения записей, не особо пока представляю как передавать и обрабатывать данные, но думаю разберусь, если что снова спрошу тут, всем ещё раз спс ребят)
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
21.04.2016, 09:16
Цитата Сообщение от SergoMorello Посмотреть сообщение
большое спс
Не за что)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.04.2016, 09:16
Помогаю со студенческими работами здесь

Кто-нибудь передавал параметр в отчет MSSQL?
Кто-нибудь когда-нибудь передавал параметры в отчет MSSQL из VC++? не поделитесь ли работающим...

Передача параметра приложению
Visual Studio 2010, приложение Windows Forms. как передать параметр форме? ну скажем есть у меня...

Передача параметров из дочерней формы
Доброго времени суток. Почитал уже много тем по сабжу, в том числе и на этом форуме, но до конца...

Вопрос по передаче параметров в процедуру из C# в управляемый C++
хм-хм... удалось только через извращённое ковыряние и unsafe: C++ сторона: public __gc class...

Передача параметров из .h в форму
Есть файл-хидер, в нем реализована функция шифрования, которая вызывается при нажатии на Button. ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru