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

Windows Form и .cpp

05.04.2012, 22:27. Показов 5791. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу в Visual Studio 2010 C++,возникла проблема .Создал я Windows Form и пытаюсь из своего файла срр получить доступ к label,но ничего не получаетсяБпишет ошибки Ошибка 3 error C2227: выражение слева от "->Text" должно указывать на тип класса, структуры или объединения либо на универсальный тип, ну и так далее.В чем проблема? Как мне например из своего срр файла изменить надпись на label?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.04.2012, 22:27
Ответы с готовыми решениями:

Как запустить .cpp в проекте Windows Form?
Всем доброго времени суток! Помогите, пожалуйста, решить проблему - работаю в Visual Studio 2010. Создала пустой проект, написала...

Как вернуть значения в cpp файл из Form.h (класса)
Помогите, пожалуйста, я хочу после нажатия на кнопку закрыть окно и вернуть значения в cpp файл Это cpp #include...

Можно ли вообще в проект CLI подключить файлы cpp на которых основной код и в FORM наследовать данные от туда
об этом вопросе я спрашивала иначе вот здесь https://www.cyberforum.ru/cpp-cli-winforms/thread2028039.html

9
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
06.04.2012, 12:20
Цитата Сообщение от Black_Smile Посмотреть сообщение
Создал я Windows Form
Windows Form создали не Вы. Вы создали экземпляр - переменную. Видно ли ее в Вашем cpp? Покажите код и тип решения.
0
0 / 0 / 0
Регистрация: 13.03.2011
Сообщений: 16
06.04.2012, 21:05  [ТС]
я думаю вы поняли что я имел в виду когда говорил о том что создал Windows Form.
вот мой .срр
C++
1
2
3
4
5
6
7
8
9
10
#include "stdafx.h"
#include "Form1.h"
int s(int d)
{
    int m=d*10;
    Form1->label1->Text=L"sss";//пишет что не объявленный идентификатор   
    label1 -> Text = L"sss";/*выражение слева от "->Text" должно указывать на тип класса,структуры или объединения либо на универсальный тип */
    this -> label1 -> Text = L"sss";//this: может указываться только в нестатических членах-функциях
    return m;
}
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
07.04.2012, 02:19
Цитата Сообщение от Black_Smile Посмотреть сообщение
#include "Form1.h"
Конечно понял. В этой строке - объявление класса Form1 - наследующего от Form. Однако нужно создать экземпляр этого класса (часто он к несчастью имеет то же имя).
То есть нельзя обратится к члену label1 не имея экземпляра:
C++
1
2
Form1^ f1 = gcnew Form1();
f1->label1->Text=L"Text";
Однако не видя структуры проекта не ясно, что Вам посоветовать. Ведь если экземпляр Form1 у Вас где-то уже есть, то сказанное ещё далеко от того что Вам нужно. Если так то лучше бы сделать хидер для Вашего cpp с объявлением
C++
1
int s(int d);
И этот хидер вставить в Form1 из которого и вызывать функцию...

Можно и сложнее - передать указатель на Ваш Form1 в функцию, потом объявить указатель на созданный экземпляр как показано, а затем присвоить этот указатель переданному с использованием приведение типа... Это вряд-ли лучше. Что бы не гадать расскажите, где создается экземпляр? Откуда хидер Form1.h? Что за тип решения?
0
0 / 0 / 0
Регистрация: 13.03.2011
Сообщений: 16
07.04.2012, 13:23  [ТС]
я лучше скину весь проект,что бы не было неразберихи
на счет хидера,то я так и сделал,просто по другому я не смог получить доступ к своему .срр файлу.
Просто я не могу понять как правильно получить доступ к labe1 и т.п. элементам
Label1dost.rar
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
07.04.2012, 15:03
Цитата Сообщение от Black_Smile Посмотреть сообщение
на счет хидера,то я так и сделал
Это вполне нормально. Т.е. пригодится в будущем. Но похоже нужно начать с того, что программа в с++ - код, выполнение которого управляется событиями. То есть, упрощенно говоря, для того что-бы некоторая часть кода выполнилась необходимо что бы что то произошло ее запускающее.
Кликните правой кнопкой по макету вашей формы в дизайнере форм и выберите в выпадающем меню - properties. В окне свойств в верхней линейке справа кликните пиктограмму "молния". В открывшемся окне событий найдите Click (первое событие в списке) и щелкните по нему дважды. Вы попадёте в код формы в созданный автоматически метод обработки клика формы:
C++
1
2
private: System::Void Form1_Click(Object^ sender, EventArgs^ e){
}
напишите в нём:
C++
1
2
3
private: System::Void Form1_Click(Object^ sende, EventArgs^ e){
this->Label1->Text="Yohoo!";
}
скомпилируйте, запустите, кликните на форме.
Функции обработчики событий можно создавать для любых контроллов: кнопок, панелей, и пр.
Пока Вам есть о чём почитать. А внешние объявления и определения понадобятся когда средств класса форм станет не хватать.
0
0 / 0 / 0
Регистрация: 13.03.2011
Сообщений: 16
07.04.2012, 16:02  [ТС]
спасибо,но все это я знал,вопрос состоит в другом: как мне те же события вызвать из моего .срр файла?
допустим у меня на форме есть кнопка и label,при нажатии на эту кнопку мне надо что бы вызывалась моя ф-ия находящаяся в мною созданном .срр файле,при чем что бы в этой ф-ии при наступлении определенных событий(например d>10) у меня менялся текст на label'е.Объясните мне пожалуйста как это осуществить.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
07.04.2012, 16:55
Цитата Сообщение от Black_Smile Посмотреть сообщение
,при нажатии на эту кнопку мне надо что бы вызывалась моя ф-ия
Вы же создали хидер для cpp вставьте его в хидер формы и вызывайте Вашу ф-ию в обработчик клика кнопки...
Цитата Сообщение от Black_Smile Посмотреть сообщение
наступлении определенных событий
События должны быть определены, действительно. Если не хватает заложенных - уже плохо, т.к. форма это GUI и делать в ней то что делается native коде не хорошо. Есть класс BackGroundWorker в System::Treading но, я с ним почти не работал, там наверно можно и переменную отследить...
Цитата Сообщение от Black_Smile Посмотреть сообщение
менялся текст на label'е
А это делать из внешней функции я считаю не хорошо. Пусть возвращает в обработчик откуда вызвана что-то, а в обработчике меняется Label1. Иначе в функцию придется передавать указатель на форму и т.п., как уже было сказано.
0
58 / 58 / 6
Регистрация: 10.07.2011
Сообщений: 229
12.04.2012, 14:46
Цитата Сообщение от Black_Smile Посмотреть сообщение
спасибо,но все это я знал,вопрос состоит в другом: как мне те же события вызвать из моего .срр файла?
допустим у меня на форме есть кнопка и label,при нажатии на эту кнопку мне надо что бы вызывалась моя ф-ия находящаяся в мною созданном .срр файле,при чем что бы в этой ф-ии при наступлении определенных событий(например d>10) у меня менялся текст на label'е.Объясните мне пожалуйста как это осуществить.
Если ты хочешь так все замудрить, то тебе придется при вызове функции аргументом передавать указатель на твой label и делай что хочешь с ним.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
12.04.2012, 15:58
Цитата Сообщение от Mustik Посмотреть сообщение
передавать указатель на твой label
Mожно передать Label^ , объявив его в экземпляре Form1 public: и так со всеми членами. Не лучше ли позволить Form1 модифицировать свои поля и вызывать методы самостоятельно, передавая ей необходимую информацию?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.04.2012, 15:58
Помогаю со студенческими работами здесь

подскажите как исправить ошибку Form.cpp(37): E2141 Declaration syntax error
Отработать технику отображения дерева с использованием компонента TTreeView. Для этого в заголовке определить структуру, описывающую...

Создать win form, используя шаблон windows form в clr, однако такого шаблона на моей студии 2013 нет
есть необходимость создать win form используя шаблон windows form в clr, однако такого шаблона на моей студии 2013 не обнаружено ... :(

Есть три файла. файл main.cpp и Source.cpp знают только Header.h, так как он подключен. как же подключается Source.cpp
main.cpp #include <iostream> #include"Header.h" using namespace std; int main() { A ob; ob.f(); return...

Запуск Windows Form Applications на машине с ранними версиями Windows/.Net
Помогите решить проблему, есть приложение WFA написанное на VB.NET Framework 4.0, это приложение необходимо запускать на различных машинах...

Ошибка при создании приложения windows form на Windows 7
На windows 8 без проблем работал, решил поставить 7-ку и возникла ошибка . Читал что проблема может быть в net.framework. ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru