146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
1

Символ новой строки в MFC

17.03.2009, 02:35. Показов 5239. Ответов 8
Метки нет (Все метки)

При работе в MFC нужно вести протокол работы, то есть, сделали операцию a + b = c, записали в окно и т.д.
Я создал Edit Control, с переменной типа CString, под названием hist, в процессе объявляю переменную CString str, и каждую операцию записываю в неё, например str += “+” и т.д. В конце пишу
C++
1
hist += (h + _T("\r\n"));
и в окне выводится нужный результат, в конце несколько квадратиков, которые не нужны, но перехода на новую строку нет.
Если написать
C++
1
hist += h;
тогда квадратиков нет, но так же нет и перехода на новую строку.
Как сделать переход на новую строку в Edit Control?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2009, 02:35
Ответы с готовыми решениями:

Символ новой строки
Всем привет) С маппировал текстовый файл в память. HANDLE file = CreateFile(fileNameWChar,...

Зачем здесь символ новой строки?
Стивен Прата, Язык программирования С++, глава 7, пример 7 Никак не пойму, зачем здесь double...

Std::cin, символ новой строки
Подскажите, куда в данном примере после каждого cin'а девается символ новой строки? Насколько помню...

Ошибка: символ новой строки в потоке
После того как указываю 1 пункт (к-ство квартир),то мне выбивает сразу 2 и 3,а не...

8
4864 / 3286 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
17.03.2009, 03:46 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
#include <iostream>
 
using namespace std;
 
/* склеивает строки */
int main(void)
{
    string s1 = "one",
           s2 = "two",
           s3;
    
    cout << s1
         << endl
         << s2
         << endl;
    cout << s1 + " " + s2 + "\r\n";
    return 0;
}
вывод
Код
[guest@station tmp]$ ./test
one
two
one two
[guest@station tmp]$
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
17.03.2009, 09:16  [ТС] 3
У меня на MFC не поддерживается тип string, то есть, объявляю
C++
1
string str = "abc",
компилятор выдаёт сообщение 'string' : undeclared identifier.
Но там есть тип CSting. В общем, как только не писал:
C++
1
2
history += (h + _T("\r\n"));
h += "\r\n"
не получается.
0
Заблокирован
17.03.2009, 09:22 4
_T("\r\n") - не надо _T ! Вот и не выходит, на крайняк можно писать
C++
1
hist += (h + (CString)"\r\n");
но по идее катит
C++
1
hist += (h + "\r\n");
Может не получаться если у тебя к примеру h - это или char *,(LPTSTR),(LPCTSTR) тогда перед h надо приводить к CString. думаю так по-любэ выйдет
C++
1
hist += (CString)((CString)h + "\r\n");
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
17.03.2009, 09:33  [ТС] 5
По идее-то должно работать, но в том то и дела, что не проходит
C++
1
hist += (h + "\r\n");
,
пишет: "binary '+' : no operator found which takes a right-hand operand of type 'const char [3]' (or there is no acceptable conversion)"
Вариант
C++
1
hist += (CString)((CString)h + "\r\n");
проходит, но результата нет - символа новой строки нет.
0
Заблокирован
17.03.2009, 11:29 6
Напиши что у ТЕБЯ за переменная h тогда помогу, вообще вижу что это у тебя const char[3], чегобы её не заменить на char ну сделай буферную переменную и запехни в неё свой конст чар. Попробуй ещё так
C++
1
hist += (CString(h) + "\r\n");
Конешно если у тебя ещё и hist LPCTSTR то нефига не выйдет, толька использовать буферную переменну на лету сложить не выйдет
0
Заблокирован
17.03.2009, 11:37 7
Чтоб не быть голословным кидаю свой проект (делал в MFC, весь код в функции
C++
1
void CTest13Dlg::OnOK()
).Короче открывай test13.dsw, запускай и жми ОК - всё по твоей формуле считается, сам погляди
Вложения
Тип файла: rar test13.rar (8.7 Кб, 36 просмотров)
Тип файла: rar test13.exe.rar (3.5 Кб, 22 просмотров)
0
Заблокирован
17.03.2009, 11:39 8
C++
1
2
3
CString hist;
const char h[] = "123";
hist += (CString(h) + "\r\n");
Всё работает!...
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
17.03.2009, 13:03  [ТС] 9
Переменная h у меня типа CString, но компилятор пишет, что это char [].
Ты на чём пишешь? Когда я вставляю часть твоего кода
C++
1
2
3
4
             CString hist;
    const char h[] = "123";
    hist += (CString(h) + "\r\n");
    m_edit1_1 += hist;
для теста в новый проект, то мне пишет "binary '+' : no operator found which takes a right-hand operand of type 'const char [3]' (or there is no acceptable conversion)", хотя твой проект компилируется без проблем.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2009, 13:03
Помогаю со студенческими работами здесь

Отбрасывает ли std::cin символ новой строки?
Здравствуйте. Есть следующий код (это задача из книги Праты): #include &lt;iostream&gt; const...

Будет ли добавлен символ новой строки при ошибочном вводе?
После того, как пользователь введет число и нажмеn enter в поток будет передан символ новой строки...

Как убрать символ новой строки, применяя перегруженный оператор <<?
Друзья! Ну то есть формируются строки хитрым способом (не вручную, лучше не углубляться в это) ...

Ввести символьную строку. Распечатать каждый символ массива с новой строки
Ввести символьную строку. Распечатать каждый символ массива с новой строки.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru