Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение размера CListCtrl 
:(
    Опции темы
kometa_triatlon
Дата 1.8.2005, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть такой вопросик...
Приложение, в котором класс представиления унаследован от CFormView, на форме расположен этот список, растянут, границы убраны. Получается что-то вроде Екселя. Но как сделать чтобы он растягивался на все окно при изменении размеров окна? Пробовал пример из МСДН (причем именно для CListCtrl) - функция MoveWindow, вылетел с еррором при запуске проги. Нашел в книжке другой вариант - SetWindowPos (для rich edit'a), тоже самое.
Код

void CMyView::OnSize(UINT nType, int cx, int cy)
{
    CFormView::OnSize(nType, cx, cy);

    CRect rect;
    GetClientRect(rect);
    //m_listList.SetWindowPos(&wndTop, 0, 0, rect.right-rect.left, rect.bottom-rect.top, SWP_SHOWWINDOW);
    //m_listList.MoveWindow(0, 0, rect.right-rect.left, rect.bottom-rect.top, TRUE);
}


Что делать? Может есть какой-то прикол, которого я не знаю?


--------------------
Всё очень просто: сказки обман,
Солнечный остров скрылся в туман,
Замков воздушных не носит земля,
Кто-то ошибся, ты или я.

--------------
Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым.
PM MAIL ICQ   Вверх
ManiaK
Дата 2.8.2005, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

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



kometa_triatlon Как-то ты хитро smile Форма, да на ней ещё лист...

Тут скорей всего понапутано с ректами. Попробуй такую пакость:
Код

void CMyView::OnSize(UINT nType, int cx, int cy)    
{    
    CFormView::OnSize(nType, cx, cy);    
    CRect rect;    
    GetClientRect(rect);    
    СCString str;
    str.Format("%d %d %d %d", rect.left, rect.top, rect.right, rect.bottom);
    AfxMessageBox(str);    
}


Наверняка в глаза бросится какое-нибудь несоответствие. Попробуй ещё задать жёстко размеры: 0,0,100,100. Посмотри, где окно окажется. Вообщем, тыкайся smile
PM MAIL WWW   Вверх
kometa_triatlon
Дата 2.8.2005, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



smile
Да уж, несоответствие....
Короче вот вам типа дамп (вывело 5 мессагов!):
0 0 480 353 - это действительно размеры.
0 0 0 0
0 0 588 550
0 0 588 510
0 0 480 353
После этого появилось окно...
При изменении размеров уже после этого message'ного поноса выводится уже одно сообщение с корректными координатами.
Интересно, что происходит при запуске?
Кстати, жесткое задание тоже ничего не дало.


--------------------
Всё очень просто: сказки обман,
Солнечный остров скрылся в туман,
Замков воздушных не носит земля,
Кто-то ошибся, ты или я.

--------------
Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым.
PM MAIL ICQ   Вверх
ManiaK
Дата 2.8.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

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



Цитата(kometa_triatlon @ 2.8.2005, 15:39)
Короче вот вам типа дамп (вывело 5 мессагов!):

Мда... жуть какая-то. Вообще, там и должно быть несколько вызовов (мелкософт постарался smile ), но как-то уж больно странно координаты меняются...

Цитата(kometa_triatlon @ 2.8.2005, 15:39)
Кстати, жесткое задание тоже ничего не дало.

В каком смысле? Размер сам меняется что ли?
Ну тогда рассказывай, как обгонял, как подрезал... smile
Добавлено @ 14:52
Код давай вообщем smile
PM MAIL WWW   Вверх
Coocky
Дата 2.8.2005, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



kometa_triatlon smile
Изменяй размеры листа, а не FormView smile
Код

void CMyView::OnSize(UINT nType, int cx, int cy)    
{    
    CFormView::OnSize(nType, cx, cy);    
    
if (IsWindow(my_ListCtrl)) myListCtrl.MoveWindow(0,0,cx,cy); 


}


Добавлено @ 16:16
kometa_triatlon
Цитата
Пробовал пример из МСДН (причем именно для CListCtrl) - функция MoveWindow, вылетел с еррором при запуске проги

Дык обработчик срабатывает раньше, нежели создается обьект Листа!
Для этого есть проверка
Код

IsWindow();

Вообще надо отладчиком пользоваться, вразу б увидел макросс ACCERT на обьекте my_ListCtrl smile
ManiaK
Хорош на Мелких гнать! Там умные программисты, это мы -дураки(и я в том числе) smile

Это сообщение отредактировал(а) Coocky - 2.8.2005, 16:31


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
kometa_triatlon
Дата 2.8.2005, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Coocky
Наконец я тебя дождался smile Работает.
Вот уж действительно нюансы...
Короче спасибо, что ты есть smile


Добавлено @ 17:20
И вопрос вдогонку: как избавиться от моргания листа при изменении размеров? Здесь двойная буферизация не прокатит я думаю smile


--------------------
Всё очень просто: сказки обман,
Солнечный остров скрылся в туман,
Замков воздушных не носит земля,
Кто-то ошибся, ты или я.

--------------
Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым.
PM MAIL ICQ   Вверх
Coocky
Дата 2.8.2005, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



kometa_triatlon
Цитата
как избавиться от моргания листа при изменении размеров?

Честно сказать-незнаю.Это даже у Мелких есть. Ведь при изменении размеров-идет перерисовка.
Расположи Лист даже без резсайзинга и поизменяй окно.Будет моргание..
Добавлено @ 17:44
А вот глянь smile
http://forum.vingrad.ru/index.php?act=modu...dule=vingradfaq


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
kometa_triatlon
Дата 2.8.2005, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не нашел там подходящей статьи...


--------------------
Всё очень просто: сказки обман,
Солнечный остров скрылся в туман,
Замков воздушных не носит земля,
Кто-то ошибся, ты или я.

--------------
Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым.
PM MAIL ICQ   Вверх
Coocky
Дата 3.8.2005, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Честно сказать такой проблемой я не занимался, но вот эта статья может поможет
http://vingrad.ru/CPP-ART-CPP-002276
Добавлено @ 11:08
Во всяком случае смотри в сторону WM_ERASEBGKND(для своегго класса Листа)
Как за 5 минут добавить свой класс к нарисованому на диалоге-я тебя учил.
Попробуй, поэксперементируй...


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
kometa_triatlon
Дата 3.8.2005, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я тут подумал... Фиг с ним, мерцанием smile
Ту статью я читал давно, когда писал прогу для построения графика, но здесь же я не с графикой работаю, никаких контекстов устройств и прочего...
Поискал в rsdn, на других форумах... Короче, буду писать письмо топ-менеджеру Microsoft.



--------------------
Всё очень просто: сказки обман,
Солнечный остров скрылся в туман,
Замков воздушных не носит земля,
Кто-то ошибся, ты или я.

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


 




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


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

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