Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349

Проблемы в EditBox с выводом матрицы

12.09.2012, 08:37. Показов 1629. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. У меня такой вопрос:
Есть EditBox(ES_MULTILINE), в который я записываю матрицу. Если в строке у меня нет отрицательных чисел, то строка выводится нормально, если же есть отрицательные, то, дойдя до некоторого элемента строки матрицы, программа начинает записывать последующие элементы строки в новой строке. Вот код:
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
        for(i2 = 0; i2 <= m+1; i2++)
        {
            for(j2 = 0; j2 <= h+1; j2++)
            {
                    if(j2 == h+1)
                    {
 
                       elemS = _T("  ");
                       len3 = GetWindowTextLength(hAnswerEdit);
                       SendMessage(hAnswerEdit, EM_SETSEL, len3, len3);
                       SendMessage(hAnswerEdit, EM_REPLACESEL, FALSE, (LPARAM)elemS);
 
                       _sntprintf( elem, 20, _T("%f"), MainMatrixS[i2][j2]);
                       len = GetWindowTextLength(hAnswerEdit);
                       SendMessage(hAnswerEdit, EM_SETSEL, len, len);
                       SendMessage(hAnswerEdit, EM_REPLACESEL, FALSE, (LPARAM)elem);
 
 
 
                       elemP = _T("\r\n");
                       len2 = GetWindowTextLength(hAnswerEdit);
                       SendMessage(hAnswerEdit, EM_SETSEL, len2, len2);
                       SendMessage(hAnswerEdit, EM_REPLACESEL, FALSE, (LPARAM)elemP);
                    }
                    else
                    {
                        elemS = _T("  ");
                        len3 = GetWindowTextLength(hAnswerEdit);
                        SendMessage(hAnswerEdit, EM_SETSEL, len3, len3);
                        SendMessage(hAnswerEdit, EM_REPLACESEL, FALSE, (LPARAM)elemS);
 
                        _sntprintf( elem, 20, _T("%f"), MainMatrixS[i2][j2]);
                        len = GetWindowTextLength(hAnswerEdit);
                        SendMessage(hAnswerEdit, EM_SETSEL, len, len);
                        SendMessage(hAnswerEdit, EM_REPLACESEL, FALSE, (LPARAM)elem);
                    }
            }
        }
Помогите это исправить плиз. Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.09.2012, 08:37
Ответы с готовыми решениями:

EditBox и непойми что с выводом
Работаю с EditBox. Вывожу туда сообщения при помощи EM_REPLACESEL, который, как написано на msdn, получает &quot;A pointer to a...

перевод из CString EditBox'a в int, потом вывод массива int в другой EditBox
Программа на Visual C++ 6.0 Сильно не бить если сложно понять этот ужас. Если кому надо пояснялки могу добавить. Вопрос в следующем: ...

Проблемы с выводом
Это часть программы. При вводе фамилии , имени, телфон, дату и вводишь &quot;*&quot; вывод получаеться правильный( выводить фамилия и имя). При вводе...

10
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
12.09.2012, 13:37
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
double MainMatrixS[m+1][h+1];
 
// ...
 
        for(i2 = 0; i2 < m+1; i2++)
        {
            TCHAR elemP[3] = L"\r\n";
            TCHAR line[256] = {0};
            for(j2 = 0; j2 < h+1; j2++)
            {
                TCHAR buffer[20] = {0};
                swprintf(buffer, _T("%10.5f\0"), MainMatrixS[i2][j2]);
                wcscat(line, buffer);
                wcscat(line, ((j2 == h) ? elemP : _T("")));
            }
            int len = GetWindowTextLength(hAnswerEdit);
            SendMessage(hAnswerEdit, EM_SETSEL, len, len);
            SendMessage(hAnswerEdit, EM_REPLACESEL, FALSE, (LPARAM)line);
        }
Миниатюры
Проблемы в EditBox с выводом матрицы  
0
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
12.09.2012, 13:48  [ТС]
Попробовал по-вашему, UI. Мне среда во время исполнения выдала:
Run-Time Check Failure #2 - Stack around the variable 'line' was corrupted.
в чем может быть проблема?
0
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
12.09.2012, 14:03  [ТС]
Увеличил длину line до 65536. Вот что получил:
Миниатюры
Проблемы в EditBox с выводом матрицы  
0
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
12.09.2012, 14:06  [ТС]
p.s. у меня матрица размерностью 502х502

Добавлено через 36 секунд
А выводит что-то не совсем понятное
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
12.09.2012, 14:54
Сказал бы сразу, что у тебя такие объемы...

Цитата Сообщение от Hydrogen Посмотреть сообщение
А выводит что-то не совсем понятное
Все нормально выводит. Проблема - в том, что в одной строке EDIT-а помещается ровно 1024 символа. Остальные он переносит на следующую строку. Насколько я помню, это не лечится. Переходи на RichEdit.
1
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
12.09.2012, 15:00  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Переходи на RichEdit.

Подскажите плиз, какой стиль надо прописать в CreateWindow
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
12.09.2012, 15:55
Я вот так создал:
C++
1
2
3
4
5
6
7
8
9
10
11
    if (!hRTFLib)
        hRTFLib = LoadLibrary(L"RICHED32.DLL");
    if (!hRTFLib)
    {
        // выводишь сообщение об ошибке и невозможности использования richedit-а
        // и выходишь из программы
    }
    hAnswerEdit = CreateWindowEx(0, L"RICHEDIT", L"",
        ES_MULTILINE|ES_AUTOHSCROLL|WS_VSCROLL|WS_HSCROLL|WS_VISIBLE|WS_CHILD,
        10, 10, 500, 220, hwnd,(HMENU)1001, hThisInstance, NULL);
    SendMessage(hAnswerEdit, WM_SETFONT, WPARAM(GetStockObject(DEFAULT_GUI_FONT)), 1);
, И потом выводил таблицу размером 502*502 с длиной line = 8192. Заполняется нормально, но не очень быстро...

P.S. не забудь при закрытии программы вызвать FreeLibrary.
1
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
12.09.2012, 16:36  [ТС]
Чего-то у меня все повисло

Добавлено через 16 минут
Проблему с "зависанием" решил, только чет он опять уводит элементы из одной строки на новую
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
12.09.2012, 17:55
Не знаю, что там у тебя за проблема. Вот проект (вместе с EXE-шником), который выводит одну-единственную строку в RichEdit. Строка получается длиной в 5031 символ, и отображается именно одной строкой, переносов нет. Проверяй.
Вложения
Тип файла: zip test.zip (22.1 Кб, 8 просмотров)
1
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
13.09.2012, 05:52  [ТС]
P.S. Спс. Проблему решил. Надеюсь не очень надоел)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.09.2012, 05:52
Помогаю со студенческими работами здесь

Проблемы с выводом
Шифр Цезаря проблема с выводом выдает какие-то символы, а должно буквы var Form1: TForm1; m,a,c:string; ...

Проблемы с выводом
Подскжите пожалуйста почему не работает эта программа ? Почему точнее не работает вывод ? #include&lt;iostream&gt; ...

Проблемы с выводом
У меня расхождение с учебником, а в чем проблема не как не могу догадаться, подскажите пожалуйста, почему нет вывода? #include...

Проблемы с выводом из БД
Здравствуйте! У меня есть некая база данных, в которой лежат картинки. Отправляется запрос с ссылкой на картинку, далее ищем её в БД,...

Проблемы с выводом i++
Ребят, столкнулся с такой проблемой, помогите, кто шарит, как ее решить. Решил позаниматься c#, дошел до выражений if и else, думаю,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru