Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопросы по Edit Control 
:(
    Опции темы
kutuzov
Дата 26.10.2007, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.1.2007

Репутация: нет
Всего: нет



Добрый день 
Есть у меня Edit Control со включенным multiline.
В него выводятся логи выполнения программы.
Не получается реализовать следующее:
Хочу сделать чтоб при изменении размера окна диалога, менялся размер Edit'a
Делаю так:
Код

void Cdsp_consoleDlg::OnSize(UINT nType, int cx, int cy)
{
    CDialog::OnSize(nType, cx, cy);
    CRect   rect;
    this->GetWindowRect(rect);
    add_text.SetRect(rect); //add_text это контрол диалога
}

При запуске программа вылетает с ошибкой 
Debug assertion Failed!
Program...
File: afxwin2.inl


И еще одна проблема: 
Хочу чтоб при выводе текста и его проскроливании вниз позиция курсора была на последней строчке т.е. последняя строка текста была на экране, а не приходилось прокручивать окно вниз, при выводе каждой новой строки.
делаю так:
Код

    int i, count;
    POINT point;
    i = add_text.LineLength();
    count = add_text.GetLineCount();
    point.x = i;
    point.y = count;
    add_text.SetCaretPos(point);
    add_text.SetFocus();


Курсор в той же позиции ...

M
zkv
Пользуйтесь тегом "код"


Это сообщение отредактировал(а) zkv - 27.10.2007, 00:28
PM MAIL   Вверх
Andrey44
Дата 29.10.2007, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



Перед ресайзингом делай проверку if(add_text.GetSafeHwnd()!=0)


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
zkv
Дата 29.10.2007, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



1. ты пытаешься изменить размер контрола, грубо говоря, до того как он создан. 
Один из вариантов решения: в членах класса заводим переменную типа bool, которая будет сигнализировать о том, что контролы уже созданы, в конструкторе присваиваем ей false, а в OnInitDialog() - true, OnSize() оформляем так:
Код

void Cdsp_consoleDlg::OnSize(UINT nType, int cx, int cy)
{
    
    CDialog::OnSize(nType, cx, cy);
    if( m_isControlsInitialized )
    {
        CRect   rect;
        this->GetWindowRect(rect);
        add_text.SetRect(rect); //add_text это контрол диалога
    }
}

2. 
Код

    int i, count;
    i = add_text.LineLength();
    count = add_text.GetLineCount();
    add_text.LineScroll( count, i );

PM MAIL   Вверх
kutuzov
Дата 29.10.2007, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 19.1.2007

Репутация: нет
Всего: нет



Спасибо за ответы,
только add_text.SetRect(rect); не меняет размер edit'a ,а устанавливает область форматирования... 
Может кто подскажет как размер edit'a поменять? ...
PM MAIL   Вверх
Andrey44
Дата 29.10.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



add_text.SetWindowPos(....................) smile 


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
zkv
Дата 29.10.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



или MoveWindow()
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0755 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.