Вопрос по CListCtrl
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 26.01.18 10:31
Оценка:
Есть компонент IDC_LIST1, которому соответствует переменная m_IDC_LIST1 типа CListCtrl. При этом этот компонент IDC_LIST1 поставлен в режим таблицы (грида). Показывается при этом без прокрутки только 20 строк.
Есть динамический массив (вектор) vector myvect<string> (или vector myvect<char[80]>), содержащий, скажем, 150 строк ( std::string или char[80] ).
Как сделать так, чтобы при прокрутке (скроллинге) этого грида IDC_LIST1 по вертикали отображались бы только 50 текущих строк? То есть у меня в этом гриде расположены только 50 первых строк, я прокручиваю этот грид по вертикали вниз и когда попадаю на 51-ую строку, то у меня содержимое грида меняется--вместо строк с 1-ой по 50-ую у меня в этом гриде отображаются строки с 10-ой по 100-ую. А когда при дальнейшей прокрутке грида по вертикали вниз я попадаю на 101-ую строку, то у меня в гриде отображаются не строки с 51-ой по 100-ую, а с 101-ой по 150-ую.
Аналогично при прокуртке грида вверх--когда я попадаю на 100-ую строку, то у меня в гриде отображаются строки с 51-ой по 100-ую (при этом нижней строкой будет 100-ая строка), а не с 101-ой по 150-ую. А когда я продолжаю прокручивать грид вверх и попадаю на 50-ую строку, то у меня в гриде отображаются строки с 1-ой по 50-ую (при этом 50-ая строка будет нижней), а не строки с 51-ой по 100-ую.
То есть чтобы я мог не поместить все вместе 150 строки из моего динамического массива (вектора), а показывать этот динамический массив "по частям"--сперва первую часть по 50 строк, потом вторую часть по 50 строк, затем третью часть по 50 строк.
Как это сделать?

И как определить при прокрутке грида IDC_LIST1, на какой его строке я нахожусь? Какую функцию лучше при этом использовать-- OnLvnBeginScrollList1 или OnLvnEndScrollList1 ?
1613 г. = 2024 г.
Re: Вопрос по CListCtrl
От: VladFein США  
Дата: 26.01.18 17:50
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>Есть компонент IDC_LIST1, которому соответствует переменная m_IDC_LIST1 типа CListCtrl. При этом этот компонент IDC_LIST1 поставлен в режим таблицы (грида). Показывается при этом без прокрутки только 20 строк.

RF>Есть динамический массив (вектор) vector myvect<string> (или vector myvect<char[80]>), содержащий, скажем, 150 строк ( std::string или char[80] ).
RF>Как сделать так, чтобы при прокрутке (скроллинге) этого грида IDC_LIST1 по вертикали отображались бы только 50 текущих строк? То есть у меня в этом гриде расположены только 50 первых строк, я прокручиваю этот грид по вертикали вниз и когда попадаю на 51-ую строку, то у меня содержимое грида меняется--вместо строк с 1-ой по 50-ую у меня в этом гриде отображаются строки с 10-ой по 100-ую. А когда при дальнейшей прокрутке грида по вертикали вниз я попадаю на 101-ую строку, то у меня в гриде отображаются не строки с 51-ой по 100-ую, а с 101-ой по 150-ую.
RF>Аналогично при прокуртке грида вверх--когда я попадаю на 100-ую строку, то у меня в гриде отображаются строки с 51-ой по 100-ую (при этом нижней строкой будет 100-ая строка), а не с 101-ой по 150-ую. А когда я продолжаю прокручивать грид вверх и попадаю на 50-ую строку, то у меня в гриде отображаются строки с 1-ой по 50-ую (при этом 50-ая строка будет нижней), а не строки с 51-ой по 100-ую.
RF>То есть чтобы я мог не поместить все вместе 150 строки из моего динамического массива (вектора), а показывать этот динамический массив "по частям"--сперва первую часть по 50 строк, потом вторую часть по 50 строк, затем третью часть по 50 строк.
RF>Как это сделать?
Virtual List Controls

RF>И как определить при прокрутке грида IDC_LIST1, на какой его строке я нахожусь? Какую функцию лучше при этом использовать-- OnLvnBeginScrollList1 или OnLvnEndScrollList1 ?

"на какой его строке" кто находится? selection? индекс верхней (или нижней) строки?
Re[2]: Вопрос по CListCtrl
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 29.01.18 07:01
Оценка:
Здравствуйте, VladFein, Вы писали:

RF>>И как определить при прокрутке грида IDC_LIST1, на какой его строке я нахожусь? Какую функцию лучше при этом использовать-- OnLvnBeginScrollList1 или OnLvnEndScrollList1 ?

VF>"на какой его строке" кто находится? selection? индекс верхней (или нижней) строки?

Индекс нижней строки.
1613 г. = 2024 г.
Re[3]: Вопрос по CListCtrl
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 29.01.18 09:18
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>Здравствуйте, VladFein, Вы писали:


RF>>>И как определить при прокрутке грида IDC_LIST1, на какой его строке я нахожусь? Какую функцию лучше при этом использовать-- OnLvnBeginScrollList1 или OnLvnEndScrollList1 ?

VF>>"на какой его строке" кто находится? selection? индекс верхней (или нижней) строки?

RF>Индекс нижней строки.


Также меня интересует и индекс верхней строки (при скроллировании вверх).
1613 г. = 2024 г.
Re[4]: Вопрос по CListCtrl
От: VladFein США  
Дата: 29.01.18 18:57
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>>Индекс нижней строки.


RF>Также меня интересует и индекс верхней строки (при скроллировании вверх).


CListCtrl::GetTopIndex

CListCtrl::GetCountPerPage
Re[5]: Вопрос по CListCtrl
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 30.01.18 07:51
Оценка:
Здравствуйте, VladFein, Вы писали:

VF>CListCtrl::GetTopIndex


VF>CListCtrl::GetCountPerPage


Ясно. И ещё вопрос: можно ли определить (например, в функции CListCtrl::OnVScroll) в каком направлении я осуществляю прокрутку--вниз или вверх, или же нет такой возможности?
1613 г. = 2024 г.
Re[6]: Вопрос по CListCtrl
От: VladFein США  
Дата: 30.01.18 18:29
Оценка:
Здравствуйте, RussianFellow, Вы писали:

VF>>CListCtrl::GetTopIndex


VF>>CListCtrl::GetCountPerPage


RF>Ясно. И ещё вопрос: можно ли определить (например, в функции CListCtrl::OnVScroll) в каком направлении я осуществляю прокрутку--вниз или вверх, или же нет такой возможности?


Можно сравнить с предыдущим (запомненным) значением TopIndex.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.