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

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

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

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

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

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

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

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

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

СПАСИБО.
...
Рейтинг: 0 / 0
08.09.2004, 17:36
    #32685972
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++6.0 control CListCtrl
LVM_HITTEST
...
Рейтинг: 0 / 0
09.09.2004, 18:36
    #32688377
Massimo2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++6.0 control CListCtrl
в 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
09.09.2004, 19:09
    #32688427
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++6.0 control CListCtrl
LVHITTESTINFO Structure

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

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

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

Панятна?
...
Рейтинг: 0 / 0
10.09.2004, 10:53
    #32689059
MASSIMO2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++6.0 control CListCtrl
ИЗ ПРИЛОЖЕНИЯ, СКОПИРОВАННОГО ИЗ
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
10.09.2004, 16:44
    #32690141
Siebente
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++6.0 control CListCtrl
Если до понедельника дотерпишь, я-таки выкопаю фукнцию обработки из своих проектов, щас уже бежать надо....

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

Siebente

ЖДУ
...
Рейтинг: 0 / 0
13.09.2004, 09:16
    #32691181
Sie
Sie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++6.0 control CListCtrl
Вобщем с некоторыми вырезками и пояснениями....
Код 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
13.09.2004, 23:00
    #32692817
MASSIMO2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++6.0 control CListCtrl
СО СТРОКАМИ – всё ОК !

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


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