powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / VC++6.0 control CListCtrl
13 сообщений из 13, страница 1 из 1
VC++6.0 control CListCtrl
    #32678659
MASSIMO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрых всем суток,
подскажите, пожалуйста,

Код: plaintext
1.
Как определить номер или имя столбца, на котором был 
щелчёк лвой кнопкой мыши  в контроле ClistCtrl ? 

СПАСИБО
...
Рейтинг: 0 / 0
VC++6.0 control CListCtrl
    #32679555
Siebente
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
через нотификацию LVN_COLUMNCLICK?
...
Рейтинг: 0 / 0
VC++6.0 control CListCtrl
    #32680201
MASSIMO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
через нотификацию LVN_COLUMNCLICK?

In MSDN есть пример на увеличение ширины столбца,
если увеличивать ширину двух столбцов, то один из них
становиться шире не в 2 раза как в примере сказано, а в несколько раз больше.

Не ужели контрол CListCtrl НЕ ДОДЕЛАН, САМЫЙ СУМАСШЕДШИЙ
КЛАСС как один член форума раньше выразился ?

ВСЁ-ТАКИ, КТО-НИБУДЬ МОЖЕТ
ПОКАЗАТЬ КОД - НА КАКОМ СТОЛБЦЕ ( НЕ ЗАГОЛОВКЕ СТОЛБЦА )
ПОЛЬЗОВАТЕЛЬ СДЕЛАЛ ЩЕЛЧЁК ЛЕВОЙ КЛАВИШЕЙ МЫШИ ?

СПАСИБО.
...
Рейтинг: 0 / 0
VC++6.0 control CListCtrl
    #32682598
Siebentearbeit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
через LVN_COLUMNCLICK.

авторНе ужели контрол CListCtrl НЕ ДОДЕЛАН, САМЫЙ СУМАСШЕДШИЙ
КЛАСС как один член форума раньше выразился ?

Используй Win32API там всё доделано точно.
А один член форума - это ещё ничего не значит :)
...
Рейтинг: 0 / 0
VC++6.0 control CListCtrl
    #32685921
MASSIMO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Номера столбцов определяются после
щелчка на ЗАГОЛОВКАХ, а вот если на строке
любого столбца - не встречал примера, где
реализовано.

СПАСИБО.
...
Рейтинг: 0 / 0
VC++6.0 control CListCtrl
    #32685972
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LVM_HITTEST
...
Рейтинг: 0 / 0
VC++6.0 control CListCtrl
    #32688377
Massimo2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в MSDN имеется следующее

LVM_HITTEST
This message determines which list view item, if any, is at a specified position. You can send this message explicitly or by using the ListView_HitTest macro.

LVM_HITTEST wParam = 0;
lParam = (LPARAM)(LV_HITTESTINFO FAR *) pinfo;
Parameters
pinfo
Pointer to an LVHITTESTINFO structure that contains the position to hit test and receives hit test result data.
Return Values
The index of the item at the specified position, if any, indicates success. –1 indicates failure.

Remarks
Related macro: ListView_HitTest

Requirements

Код: plaintext
1.
Если не трудно, покажите код, я не могу в этом разобраться -
я  - НАЧИНАЮЩИЙ,  СПАСИБО
...
Рейтинг: 0 / 0
VC++6.0 control CListCtrl
    #32688427
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LVHITTESTINFO Structure

Members
pt
Cюда пихаешь свой POINT. В каких координатах - не помню, наверное, в оконных.
flags
Сюда оно пишет различные комбинации флажков, где находится эта точка :

LVHT_ABOVE и т.п - см. доку.

iItem
Сюда она пишет номер строки, где эта точка. Если она конечно над строкой.
iSubItem
Сюда она пишет номер столбца, где эта точка. Если она конечно над строкой.

Панятна?
...
Рейтинг: 0 / 0
VC++6.0 control CListCtrl
    #32689059
MASSIMO2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИЗ ПРИЛОЖЕНИЯ, СКОПИРОВАННОГО ИЗ
WWW.CODEPROJECT.COM
реализован код получения номера столбца, на котором
пользователь сделал щелчёк

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
void CEditList::OnClick(NMHDR* pNMHDR, LRESULT* pResult) 
{
 // TODO: Add your control notification handler code here 
if( GetFocus() != this) 
SetFocus();
CString m_sWork1;
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;

m_sWork1.Format("66.You made click on %d - ом column", pNMListView->iSubItem);	
MessageBox(m_sWork1);

Тот же код реализован в моём проекте в сообщениии WM_CLICK

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
void CUsageValidatingEditControls::[color=red]OnClickList2[/color](NMHDR* pNMHDR, LRESULT* pResult) 
{ 
 // TODO: Add your control notification handler code here 
if( GetFocus() != this) 
	SetFocus();
	CString m_sWork1;
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
m_sWork1.Format("67.You made click on %d - ом column", pNMListView->iSubItem);
	MessageBox(m_sWork1);

последний код выводит НОМЕР СТОЛБЦА ТОЛЬКО ПОСЛЕ ЩЕЛЧКА НА ЗАГОЛОВКЕ СТОЛБЦА, НО ВЕДЬ НАДО ПОСЛЕ ЩЕЛЧКА НЕ НА ЗАГОЛОВКЕ

В ЧЁМ ПРИЧИНА и КАК ВЫЙТИ ИЗ СИТУАЦИИ пока не прибегаю к Вами предлагаемому методу ?
...
Рейтинг: 0 / 0
VC++6.0 control CListCtrl
    #32690141
Siebente
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если до понедельника дотерпишь, я-таки выкопаю фукнцию обработки из своих проектов, щас уже бежать надо....

У меня там по двойному клику читается вся строка.
Там же можно определить столбец.
...
Рейтинг: 0 / 0
VC++6.0 control CListCtrl
    #32690279
MASSIMO2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО ,

Siebente

ЖДУ
...
Рейтинг: 0 / 0
VC++6.0 control CListCtrl
    #32691181
Sie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sie
Гость
Вобщем с некоторыми вырезками и пояснениями....
Код MFC

Класс CDumpShow - дитё CScrollView

Объявление:
перегрузка
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDumpShow)
protected:
virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
//}}AFX_VIRTUAL

ок.

Сам лист имеет ID = IDL_FILES (просто к сведению: список файлов, кликаешь два раза - выводит из кликнутого файла нужну информацию)

тело функции:

BOOL CDumpShow::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{ NMHDR *nmhdr = (NMHDR*)lParam;
CRect rc;
char szFile[MAX_PATH];
CString cstr;
switch(wParam)
{ case IDL_FILES:// идентификатор того, кто послал
switch(nmhdr->code)
{ case NM_DBLCLK: // смысл послания
POSITION pos = this->m_lBox.GetFirstSelectedItemPosition();
// получили позицию строки, не забыть проверить, что она не NULL
int nItem = this->m_lBox.GetNextSelectedItem(pos);
// получили первый выбранный итем
this->m_lBox.GetItemText(nItem,0,szFile,MAX_PATH);
// получили с него текст с нулевой колонки
// тебе надо тут ещё сказать:
LVHITTESTINFO Info;
ListView_SubItemHitTest(this->m_lBox,&Info);
// которое вернёт тебе номер колонки и номер строки, а дальше сам :)
}
//...
}
}
...
Рейтинг: 0 / 0
VC++6.0 control CListCtrl
    #32692817
MASSIMO2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СО СТРОКАМИ – всё ОК !

А со столбцами получаю -1

// тебе надо тут ещё сказать:
LVHITTESTINFO Info;
ListView_SubItemHitTest(this->m_list,&Info);
// которое вернёт тебе номер колонки и номер
// строки, а дальше сам :

Код: plaintext
1.
2.
CString m_sWork;
m_sWork.Format("Number of column  =   %d" , Info.iSubItem);
MessageBox(m_sWork); // - 1  выведено 

СПАСИБО
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / VC++6.0 control CListCtrl
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]