Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
 Аватар для Найки
0 / 0 / 0
Регистрация: 16.12.2011
Сообщений: 5

mfc CString ^

16.12.2011, 11:11. Показов 4336. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Создал приложение MFC c++. Есть необходимость считать содержимое поля для ввода текста EGIT CONTROL. Создана переменная-член с классом CString.
Как я понял, содержимое окна копируется в переменную нашу (допустим m_MessageEgit)
Что бы передать значение в стринговую переменную необходимо объявить CString ^X;

Собственно при объявлении и возникает 2 ошибки:


Ошибка 1 error C3193: ^: требуется параметр командной строки "/clr" c:\users\1\documents\visual studio 2010\projects\rip\rip\ripdlg.cpp

Ошибка 3 IntelliSense: "^" требуется включенный C++ или CLI c:\users\1\documents\visual studio 2010\projects\rip\rip\ripdlg.cpp


Если есть другой способ скопировать текст из Egit Control в переменную (Массив) не могли бы вы продемонстрировать пример?

(GetWindowText так и не понял принцип действия)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.12.2011, 11:11
Ответы с готовыми решениями:

CString(MFC)
Здравствуйте! пишу программу, появляются проблемы со строкой типа CString.... Вообще, есть ли ли функция, позволяющая узнать длину строки...

CString, MFC
Здавствуйте! Как из объекта CString из MFC выбрать подстроку? Например, от последнего пробела и до конца строки? и наоборот - от начала -...

CString и DLL [MFC]
Читаю о том, что такое DLL и как ими правильно пользоваться по книге А. Хортона, и в первом же примере столкнулся с такой вот проблемой:...

12
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
16.12.2011, 11:16
а вообще в курсе что обозначает знак "^"?
Когда его применять? Зачем?
В курсе что такое указатели? Что такое clr? Что такое управляемый и неуправляемый код?
0
 Аватар для Найки
0 / 0 / 0
Регистрация: 16.12.2011
Сообщений: 5
16.12.2011, 11:23  [ТС]
Цитата Сообщение от oxotnik Посмотреть сообщение
а вообще в курсе что обозначает знак "^"?
Когда его применять? Зачем?
В курсе что такое указатели? Что такое clr? Что такое управляемый и неуправляемый код?
на счет указателей в курсе. clr - привязка с++ к среде .net..

^ - не знаю =(

Без него Cstirng объявляется, но значение из m_Message не передается.
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
16.12.2011, 11:39
Цитата Сообщение от Найки Посмотреть сообщение
на счет указателей в курсе.
видать не совсем в курсе... ^ - указатель на управляемый объект, который может быть создан только в управляемом коде. МФЦ к управляемому коду никак не относится.
* - неуправляемый указатель
вообще по поводу обмена данными между GUI и переменнымы смотри DoDataExchange http://www.firststeps.ru/mfc/steps/r.php?34
2
 Аватар для Найки
0 / 0 / 0
Регистрация: 16.12.2011
Сообщений: 5
16.12.2011, 11:56  [ТС]
Цитата Сообщение от oxotnik Посмотреть сообщение
вообще по поводу обмена данными между GUI и переменнымы смотри DoDataExchange http://www.firststeps.ru/mfc/steps/r.php?34
Как раз его и читал... На основе примера выше:

в переменно m_Egit содержится значение введенное в поле ввода.

Как работает переменная с функциями

.GetAt();
.GetLength();

Как я понял -
m_Egit.GetLength(n);

for (int i=0; i>n;i++)
m_Egit.GetAt(i)=buf[i]; , но выдает ошибку


3 IntelliSense: выражение должно быть допустимым для изменения левосторонним значением c:\users\1\documents\visual studio 2010\projects\rip\rip\ripdlg.cpp 180
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
16.12.2011, 11:59
C++
1
m_Egit = CString(buf);
1
 Аватар для Найки
0 / 0 / 0
Регистрация: 16.12.2011
Сообщений: 5
16.12.2011, 14:35  [ТС]
Цитата Сообщение от oxotnik Посмотреть сообщение
C++
1
m_Egit = CString(buf);
CString buf;
m_Egit = CString (buf);

Запускаю отладчик. Ввожу 1 букву. m_Egit содержит ее, а buf пустой

Добавлено через 38 минут
а вот код
Cstring (buf) = m_Egit;
показывает в режиме отладки, что в Buf содержится неправильный указатель.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
21.12.2011, 11:54
Цитата Сообщение от Найки Посмотреть сообщение
Что бы передать значение в стринговую переменную необходимо объявить CString ^X;
- нет не так
Во первых осуществили с помощью ClassWizard привязку EDITBOX-а к диалоговому окну, устанавливаем тип CString имя переменной к примеру m_edit
Теперь допустим наш обработчик нажатия клавиши ОК в окне должен считать строку из эдита и присоединив к ней строку "addition" снова должен вернуть её содержимое в эдит
C++
1
2
3
4
5
6
7
8
9
void CStringDlg::OnOK() 
{
    // TODO: Add extra validation here
    UpdateData(true);//Собираем инфу из контролов окна
        CString s = m_edit;
        s += "addition";
        m_edit = s;
        UpdateData(false);//Отдали инфу в контролы окна
}
Добавлено через 2 минуты
Найки, закиньте CLR подальше(ИМХО это ац*ой - используйте простое MFC Dialog-based приложение )
Кстати мой код можно было сделать компактней записав его вот так
C++
1
2
3
4
5
6
7
void CStringDlg::OnOK() 
{
        // TODO: Add extra validation here
        UpdateData(true);//Собираем инфу из контролов окна
        m_edit += "addition";
        UpdateData(false);//Отдали инфу в контролы окна
}
Добавлено через 2 минуты
oxotnik,
Цитата Сообщение от oxotnik Посмотреть сообщение
buf
- что за переменная???CString позволяет впихивать в него довольно многое и даже без явного преобразования. Другое дело если так хотели сделать
C++
1
2
CString str = "DATA";
char * buf = str.GetBuffer(str.GetLength());
1
21.12.2011, 13:17

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- что за переменная???
псевдо код, показал что надо работать не с управляемым указателем а с обычным

0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
21.12.2011, 14:40
Цитата Сообщение от oxotnik Посмотреть сообщение
показал что надо работать не с управляемым указателем а с обычным
так вот если код подразумевал следующее
C++
1
2
char buf[] = "DATA";
CString str = buf;
то преобразование CString(buf) совсем не обязательно...

Добавлено через 15 секунд
Цитата Сообщение от oxotnik Посмотреть сообщение
показал что надо работать не с управляемым указателем а с обычным
так вот если код подразумевал следующее
C++
1
2
char buf[] = "DATA";
CString str = buf;
то преобразование CString(buf) совсем не обязательно...
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
21.12.2011, 14:45
-=ЮрА=-, я с 1-го раза понял... не надо дублировать, и так же не надо себя самым умным выставлять. Еще раз повторю: это псевдокод и сравнения его с реальным рабочим кодом просто неуместны.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
21.12.2011, 14:48
Цитата Сообщение от oxotnik Посмотреть сообщение
это псевдокод и сравнения его с реальным рабочим кодом просто неуместны.
- не нужно нервничать просто "не надо масло делать маслянным", если понял извини что Я повторился...
0
 Аватар для Найки
0 / 0 / 0
Регистрация: 16.12.2011
Сообщений: 5
26.12.2011, 18:48  [ТС]
спасибо всем кто ответил =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.12.2011, 18:48
Помогаю со студенческими работами здесь

Как конвертировать строку MFC CString в LPSTR?
Получаю из файла CString хочу кинуть в MessageBox(mystring). Но mystring это LPSTR? Спасибо заранее!

Как преобразовать числовые типы в CString и обратно с помощью MFC?
Я нашол в MSDN-е C-шные функции из stdlib.h типа :atof(), atoi() но это C-шные а как же MFC .Нашол и обратные функции типа _itoa() но им...

CString::Format() и преобразование double в CString
Вот фрагмент программы: void CMy6_1Dlg::OnRadio3() { CString s; int i=m_list1.GetCount(); int a; int k=0; float...

подключение классов MFC к не MFC
Как подключить MFC Class From ActiveX Control к не MFC проекту? т.е. пишу обычными винапи функциями, а из этого класса нужны функции...

Из MFC 2012 в MFC 2005
Есть прокт для студии 12, всё хорошо, писал на 8ке в VS 2012 и он отлично работает. Позже понадобилось портировать его для 2005, я это всё...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru