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

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

20.04.2016, 01:33. Показов 1845. Ответов 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
9005 / 4706 / 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
9005 / 4706 / 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru