Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ListView, Помогите 
V
    Опции темы
dumb
Дата 25.9.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



код рабочий. косяк где-то еще. телепаты на канарах. давай более полный код, включая описание ресурсов.
PM MAIL   Вверх
devmstr
Дата 25.9.2006, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


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

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



Вот тебе небольшая статья. Думаю она тебе поможет! Мне помогла smile

Присоединённый файл ( Кол-во скачиваний: 34 )
Присоединённый файл  ListView.zip 40,01 Kb


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
Edik
Дата 25.9.2006, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

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



вот весь код. а статейку не вышло скачать- говорит что я гость и не пускает.
Код

//File Table.cpp
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include "resource.h"

BOOL CALLBACK DlgProc (HWND, UINT, WPARAM, LPARAM) ;

HINSTANCE hInst ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE        hPrevInstance, PSTR lpszCmdLine, int cmdShow)   
     {
     hInst=hInstance ;
     // Load common control library
     InitCommonControls () ;
     DialogBox (hInstance, MAKEINTRESOURCE (IDD_DIALOG), NULL, DlgProc) ;
     return 0 ;
     }


BOOL CALLBACK DlgProc (HWND hwnd, UINT mMsg, WPARAM wParam, LPARAM lParam) 
{

HWND hControlList;
LV_ITEM lvi;
LV_COLUMN lvc;

switch (mMsg)
     {
    case WM_INITDIALOG :
    
    hControlList=GetDlgItem(hwnd, IDC_IMAGEL);
    
    lvc.mask    = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
    lvc.fmt     = LVCFMT_LEFT;
    lvc.cx      = 95;
    lvc.pszText = "Hello"; 
    ListView_InsertColumn(hControlList, 0, &lvc);
    if (ListView_SetColumnWidth(hControlList, 0,        LVSCW_AUTOSIZE_USEHEADER)==-1)
    MessageBox(hwnd, "Error Set Column", "Error", MB_OK);

    lvi.mask        = LVIF_TEXT | LVIF_STATE ;
    lvi.state       = 0;
    lvi.stateMask   = 0;
    lvi.iItem       = 1;
    lvi.iSubItem    = 0;
    lvi.pszText     = "Text";
    lvi.cchTextMax  = 4;
    if (ListView_InsertItem(hControlList, &lvi)==-1)
    MessageBox(hwnd, "Error Insert Item", "Error", MB_OK);
    return TRUE ;
    break;
    case WM_COMMAND :
    switch (LOWORD (wParam))
    {
    // Close dialog
    case IDOK :
    EndDialog (hwnd, 0) ;
    break ;
    }
    case WM_DESTROY :
    PostQuitMessage (0) ;
    break;
    default :
    return FALSE ;
    }
}





//File Table.rc
//Microsoft Developer Studio generated resource script.
//

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS
#include "commctrl.h"
#include "resource.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// Russian resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
#ifdef _WIN32
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
#pragma code_page(1251)
#endif //_WIN32

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_DIALOG DIALOG DISCARDABLE  0, 0, 212, 113
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Common Control"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "&Close",IDOK,155,20,50,14
    CONTROL         "List1",IDC_IMAGEL,"SysListView32",LVS_REPORT | 
                    LVS_SORTASCENDING | LVS_AUTOARRANGE | LVS_OWNERDATA | 
                    WS_BORDER | WS_TABSTOP,8,6,136,86
END


#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE DISCARDABLE 
BEGIN

END

2 TEXTINCLUDE DISCARDABLE 
BEGIN
    "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
    "#include ""windows.h""\r\n"
    "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
    "#include ""commctrl.h""\r\n"
    "#include ""resource.h""\r\n"
    "\0"
END

3 TEXTINCLUDE DISCARDABLE 
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.

#endif    // Russian resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED





//File resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by CtlMacro.rc
//
#define IDD_DIALOG                      102
#define IDC_IMAGEL           104

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        104
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1003
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif


PM MAIL   Вверх
dumb
Дата 25.9.2006, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



Цитата(Edik @  25.9.2006,  18:59 Найти цитируемый пост)
Код

    CONTROL         "List1",IDC_IMAGEL,"SysListView32",LVS_REPORT | 
                    LVS_SORTASCENDING | LVS_AUTOARRANGE | /* !!! LVS_OWNERDATA | */
                    WS_BORDER | WS_TABSTOP,8,6,136,86

с самого начала было видно, что ты несколько безответственно расставляешь константы. по каждой спецефической константе дОлжно читать справку. и статейку лучше изловчиться и скачать. либо погуглить по теме...
PM MAIL   Вверх
Edik
Дата 26.9.2006, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

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



я пробовал и без LVS_OWNERDATA- тоже самое ; а то что я немного безответственно расставляю константы- так это просто я в них не шарю. наобум. постараюсь исправиться. может еще что то неправильно?
PM MAIL   Вверх
Edik
Дата 26.9.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

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



ну ты Думб- голова!!! у меня неделю ничего не выходило, а ты за раз подсказал. Спасибо. я убрал этот флаг LVS_OWNERDATA и все заработало. а статейку мне на е-майл скинут, я уже договорился. тему закрывать не буду- может еще вопросы появяться. спасибо и Эрнесту- за участие.
PM MAIL   Вверх
Edik
Дата 27.9.2006, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

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



еще вопросы у меня есть по ListView. 
1)как мне в "case WM_NOTIFY:" получить сообщение о нажатии левой кнопки мыши на Item-е в ListView и именно это сообщение идентифицировать что от ListView(так как в диалоговом окне много элементов могут посылать WM_NOTIFY),и мне скажем вывести номер итема в поле статического текста Static Text в диалоговом окне.
2)чем отличаеться в ListView состояние FOCUSED от SELECTED.
PM MAIL   Вверх
Earnest
Дата 27.9.2006, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



1) Ставь обработчик NM_CLICK:
Код

   ON_NOTIFY (NM_CLICK, IDC_MYLIST, OnClickListItem)

void CMyDialog::OnClickListItem (NMHDR* pNMHDR, LRESULT* pResult)
{
   *pResult = 0;
   // ид-р контрола приходит в заголовке, это pNMHDR->idFrom

   // если версия 4.71 +, то приходит структура NMITEMACTIVATE:
   LPNMITEMACTIVATE ptem = (LPNMITEMACTIVATE) pNMHDR;
   // из которой можно узнать итем и много чего
   // если версия младше, то HitTest
}

2) Selected - это выделенный (залитый фон)
    Focused - это в рамочке


--------------------
...
PM   Вверх
Edik
Дата 28.9.2006, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

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



с этим я уже справился, спасбо. но вот еще вопрос- как мне сделать, что бы после потери фокуса ListView итем сохранял фокус.

Добавлено @ 13:25 
ой- ой Эрнест, извини- что бы после потери фокуса элемент- Итем остался ВЫДЕЛЕННЫМ!!! то есть как я понимаю selected.
PM MAIL   Вверх
dumb
Дата 28.9.2006, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



Цитата(MSDN)

LVS_SHOWSELALWAYS
  The selection, if any, is always shown, even if the control does not have the focus.

PM MAIL   Вверх
Edik
Дата 28.9.2006, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

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



я попробую. а куда это вставить я еще не знаю...
PM MAIL   Вверх
Edik
Дата 28.9.2006, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 13.9.2006

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



ага, понял- в ресурсы. Всем еще раз спасибо за помощь.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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