Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 24.06.2011
Сообщений: 15

ListBox сохранение и открытие

24.06.2011, 14:18. Показов 1419. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень нужна помощь)))Необходимо создать ListBox с битмапом или на худой конец с какими-нибудь кружками, квадратами и т.д. Читая МСДН я так понял, что во-первых у Листа должен быть стиль LBS_OWNERDRAWFIXED, а также, что в таком случае он получает два сообщения:
WM_MEASUREITEM - при созданиии;
WM_DRAWITEM - при перерисовке;
WM_MEASUREITEM содержит в себе указатель на структуру MEASUREITEMSTRUCT.
WM_DRAWITEM содержит в себе указатель на структуру DRAWITEMSTRUCT.
Хотелось бы хотя бы заполнить список например эллипсами.
пробовал вот такой код:


C++
1
2
3
4
5
6
7
HWND hList =(..........................)// Его идентификатор например 50006;
MEASUREITEMSTRUCT mSt;
DRAWITEMSTRUCT dSt;
SendMessage(hList,WM_MEASUREITEM,mSt.CtlID,&mSt);
SendMessage(hList,WM_DRAWITEM,50006,&dSt);
// Затем пытался нарисовать в списке один эллипс
Ellipse(dSt->hDc..........)
На таким образом изображения все-равно не рисуются, надеюсь на Ваши советы по данному вопросу, если можно - подкрепленные кодом))))))
Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.06.2011, 14:18
Ответы с готовыми решениями:

Открытие файла из ListBox
Вот что я использую, не открывает файл по двойному нажатию, только после добавления в ListBox файла происходит открытие ранее добавленных...

Сохранение и открытие
Еще большие проблемы с открытием и сохранением...есть какой нить пример программы с этими функциями??????Или помогите сделать...что нужно...

Listbox открытие по нажатию строки
Здравствуйте, подскажите пожалуйста, как сделать, чтобы при нажатии на строку в listbox открывалась новая форма ?

1
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
26.06.2011, 00:01
Для Чали, Всё не правильно делаешь, для ListBox в диалоге открой свойство style -> Owner draw(раскрывающий список выбери) -> Variable ну или Fixed(вместе с текстом). У меня MS VC++ 6.0, import-ируй ресурс BMP-файл вот пример кода.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
HBRUSH    brush   = NULL;
HBITMAP   bitmap = NULL;
HDC         bdc     = NULL;
 
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)  {
 
          LPDRAWITEMSTRUCT    dm; 
 
    switch (message) {
    case WM_INITDIALOG: {
        
           // загрузка битмапа из ресурсов
    bitmap = LoadBitmap( (HINSTANCE)GetWindowLong(hDlg, GWL_HINSTANCE),  
                                          MAKEINTRESOURCE(IDB_BITMAP1) );
    bdc     = CreateCompatibleDC( GetDC(hDlg) );
    brush  = CreateSolidBrush( RGB(255, 124, 128) );
 
          return TRUE;
    }
    case WM_DRAWITEM: {
        dm = (LPDRAWITEMSTRUCT) lParam; 
 
        if(dm->CtlID == IDC_LIST1) {  // рисуем на ListBox-e с идом IDC_LIST1
 
                                SelectObject(bdc, bitmap); 
                  BITMAP    bit;
                  ZeroMemory(&bit, sizeof(BITMAP));
                  GetObject(bitmap,  sizeof(BITMAP), &bit);
 
                  RECT  rect;
                  GetClientRect( GetDlgItem(hDlg, IDC_LIST1),  &rect);
                  StretchBlt(dm->hDC, 0, 0, rect.right, rect.bottom,  
                                               bdc, 0, 0, bit.bmWidth,    bit.bmHeight, SRCCOPY);
 
                  const TCHAR* str = "Hello Graphical !!!";
                  SetBkMode(dm->hDC, TRANSPARENT);
                  SetTextColor(dm->hDC,  RGB(0, 255, 0));
 
                  HGDIOBJ  gdi = SelectObject(dm->hDC,  brush);         
                  for(int i = 0; i < 15; i++) {
                  TextOut(dm->hDC,  2, 2+i*20, str, lstrlen(str));
                  Ellipse(dm->hDC, 2, 2+i*20, 19, 19+i*20);
            }
                          SelectObject(dm->hDC, gdi);
            ReleaseDC(NULL, bdc);
        }
 
        } break;
    case WM_CLOSE: 
        DeleteObject(bitmap);
        DeleteObject(brush);
        DeleteDC(bdc);
         break;
    }
    return FALSE;
}
Простой пример, вывел фоновое изображение и текст заместо иконок эллипсы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.06.2011, 00:01
Помогаю со студенческими работами здесь

Сохранение и открытие матрицы
У меня есть 2 процедуры, одна на сохранение, другая на открытие, через save и opendialog соответственно. Когда я ввожу свою матрицу в...

Открытие и сохранение картинок
Когда открываю картинку в написанной программе а потом ее сохраняю, программа не открывает некоторые типы файлов. Например если сохраняю в...

Сохранение и открытие файла
Нужно организовать сохранение данных (элементы StringGrid) в файл, а также открытие (и соответственно заполнение этого самого StringGrid) ...

StringGrid Сохранение и открытие
Помогите пожалуйста пытаюсь сохранить стрингрид в текстовый файл procedure TForm2.Button2Click(Sender: TObject); var K:TextFile; ...

Открытие некольних файлов в ListBox одновременно
Доброе время суток. Пишу в свое удовольствие Mp3-плеер с Bass.dll. Столкнулся с проблемой. Нем могу сделать, чтобы в ListBox(типа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru