Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/35: Рейтинг темы: голосов - 35, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 53

Вывод в ListBox

01.05.2014, 14:04. Показов 6983. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите, пожалуйста, как мне вывести данные в листбокс?
Всё перепробовал ничего не получается. Взял пример с мсдна и там вывод просто через _tprintf. Я пишу так, но ничего не выходит.
C++
1
2
_tprintf(buf("Walking heap %#p...\n\n"), hMemHeap);
            SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)"");
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.05.2014, 14:04
Ответы с готовыми решениями:

Вывод в Listbox
Как вывести переменную в листбокс , в которой записано число? int a=5; LB=CreateWindow("Listbox", NULL, ...

Вывод из Listbox
#include<Windows.h> #include<tchar.h> LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM); HWND hWnd, lbox; char szName...

Вывод цифр в ListBox
Подскажите, как вывести цифры в листбокс? Текст получилось вывести.... TCHAR p; .... ...

26
 Аватар для Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
01.05.2014, 14:37
C++
1
2
3
4
5
6
7
8
9
10
11
12
    LVITEM lvi;                 // структура текста в колонке
    lvi.mask = LVIF_IMAGE | LVIF_TEXT | LVIF_PARAM;;            // Text Style
    lvi.cchTextMax = 256;           // Максимальная длина текста
    lvi.iItem = i;                          // номер строки
    lvi.iImage = i;
    lvi.iSubItem = 0;                       // номер колонки
    lvi.pszText = _T("Столбец 1");       // Текст строки
    lvi.lParam = i;
 
    ListView_InsertItem(hWndListBox, &lvi);  
    ListView_SetItemText(hWndListBox, i, 1, _T("Столбец 2"));
    ListView_SetItemText(hWndListBox, i, 2, _T("Столбец 3"));
Добавлено через 1 минуту
C++
1
#include <CommCtrl.H>   // ListView
0
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 53
01.05.2014, 14:52  [ТС]
Так на сколько я понял это создается отдельный компонент? А в стандартный листбокс никак не получится? Просто например я использовал HeapRealloc и выводил в листбокс так:
Но с _tprintf так не получается..
C++
1
2
3
4
5
6
pMemHeap = HeapReAlloc( hMemHeap, HEAP_NO_SERIALIZE, pMemHeap, hsize); 
                                if (pMemHeap != NULL)
                                {
                                    hsize = HeapSize(hMemHeap, HEAP_NO_SERIALIZE, pMemHeap);
                                    sprintf(buf,(" Изменено %d%s%Xh"), hsize," байт по адресу  : ", pMemHeap );
                                SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL, (LPARAM) buf);
0
 Аватар для Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
01.05.2014, 15:06
Цитата Сообщение от DEMONICK Посмотреть сообщение
Так на сколько я понял это создается отдельный компонент? А в стандартный листбокс никак не получится? Просто например я использовал HeapRealloc и выводил в листбокс так:
Но с _tprintf так не получается..
А как вы создаете листбокс?

Добавлено через 8 минут
возможно вам просто нужна функция _stprintf , а не _tprintf
0
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 53
01.05.2014, 15:36  [ТС]
В ресурсах перетянул на форму диалога листбокс и обращаюсь к нему по идентификатору IDC_LIST1. Ну я думал что между ними разницы особой нету.. да и я через sprintf пытался но возникает ошибка сразу

Добавлено через 25 минут
Просто я пытаюсь в проекте реализовать функцию HeapWalk и взял пример с мсдна и никак не выходит наладить вывод в листбокс
0
 Аватар для Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
01.05.2014, 15:44
DEMONICK, _tprintf - вывод на консоль
_stprintf - аналог sprintf

Хоть покажите что за ошибки.
0
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 53
01.05.2014, 15:57  [ТС]
C++
1
sprintf(buf("Walking heap %#p...\n\n"), hMemHeap);
Выражение перед скобками вероятного вызова должно иметь тип функции pointer-to
Аргумент типа Handle не совместим с параметром типа const char
0
 Аватар для Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
01.05.2014, 16:10
Вы сами то сравните ваш код

Не правильно
C++
1
sprintf(buf("Walking heap %#p...\n\n"), hMemHeap);
Правильно
C++
1
 sprintf(buf  ,  (" Изменено %d%s%Xh"), hsize," байт по адресу  : ", pMemHeap );
sprintf(буфер, текст, переменные)
0
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 53
01.05.2014, 16:23  [ТС]
Вроде правильно? Не выводит в листбокс все равно..
C++
1
2
3
4
sprintf(buf,("Walking heap %#p...\n\n"), hMemHeap);
                
            
        SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
0
 Аватар для Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
01.05.2014, 16:55
DEMONICK, вообще должен бы выводить.
попробуйте посмотреть что в buf лежит
C++
1
MessageBox(0,buf,0,MB_OK);
0
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 53
01.05.2014, 17:01  [ТС]
Аргумент типа char не совместим с параметром типа LPCWSTR. Буфер объявлен, как
C++
1
char buf[100]=""
0
 Аватар для Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
01.05.2014, 17:44
C++
1
MessageBoxA(0,buf,0,MB_OK);
Должен поддерживать эту кодировку.
0
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 53
01.05.2014, 18:00  [ТС]
MessageBox не появляется
C++
1
2
3
4
5
case IDC_BUTTON2:
        
            sprintf(buf,("Walking heap %#p...\n\n"), hMemHeap);
        MessageBoxA(hDlg, buf,0,MB_OK);
            //SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
0
 Аватар для Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
01.05.2014, 18:07
DEMONICK, тогда появляется вопрос, а вы вообще в эту ветку case попадаете?
0
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 53
01.05.2014, 18:25  [ТС]
Вроде бы да. Вот код:
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
case IDC_BUTTON2:
                
            sprintf(buf,("Walking heap %#p...\n\n"), hMemHeap);
        MessageBoxA(hDlg, buf,0,MB_OK);
            //SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
                Entry.lpData = NULL;
    while (HeapWalk(hMemHeap, &Entry) != FALSE) {
        if ((Entry.wFlags & PROCESS_HEAP_ENTRY_BUSY) != 0) {
            sprintf(buf,("Allocated block"));
            SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
 
 
            if ((Entry.wFlags & PROCESS_HEAP_ENTRY_MOVEABLE) != 0) {
                sprintf(buf,(", movable with HANDLE %#p"), Entry.Block.hMem);
            }
 
            if ((Entry.wFlags & PROCESS_HEAP_ENTRY_DDESHARE) != 0) {
                sprintf(buf,(", DDESHARE"));
            }
        }
        else if ((Entry.wFlags & PROCESS_HEAP_REGION) != 0) {
            sprintf(buf,("Region\n  %d bytes committed\n")); 
                   sprintf (buf,("  %d bytes uncommitted\n  First block address: %#p\n")); 
                   sprintf  (buf,("  Last block address: %#p\n"),
                     Entry.Region.dwCommittedSize,
                     Entry.Region.dwUnCommittedSize,
                     Entry.Region.lpFirstBlock,
                     Entry.Region.lpLastBlock);
                   SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
        }
        else if ((Entry.wFlags & PROCESS_HEAP_UNCOMMITTED_RANGE) != 0) {
            sprintf(buf,("Uncommitted range\n"));
            SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
        }
        else {
            sprintf(buf,("Block\n"));
        }
 
        sprintf(buf,("  Data portion begins at: %#p\n  Size: %d bytes\n"), //, or ;
                 sprintf(buf,("  Overhead: %d bytes\n  Region index: %d\n\n"),
                 Entry.lpData,
                 Entry.cbData,
                 Entry.cbOverhead,
                 Entry.iRegionIndex));
        SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
        
    }
    LastError = GetLastError();
    if (LastError != ERROR_NO_MORE_ITEMS) {
        sprintf(buf,("HeapWalk failed with LastError %d.\n"), LastError);
        SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
    }
 
    //
    // Unlock the heap to allow other threads to access the heap after 
    // enumeration has completed.
    //
    if (HeapUnlock(hMemHeap) == FALSE) {
        sprintf(buf,("Failed to unlock heap with LastError %d.\n"),
                 GetLastError());
        SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
    }
 
    //
    // When a process terminates, allocated memory is reclaimed by the operating
    // system so it is not really necessary to call HeapDestroy in this example.
    // However, it may be advisable to call HeapDestroy in a longer running
    // application.
    //
    if (HeapDestroy(hMemHeap) == FALSE) {
        sprintf(buf,("Failed to destroy heap with LastError %d.\n"),
                 GetLastError());
        SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
    }break;
 
    
}
0
 Аватар для Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
01.05.2014, 18:30
Цитата Сообщение от DEMONICK Посмотреть сообщение
Вроде бы да. Вот код:
Ну надо как-то проверить.
Самое простое - break point поставить и нажать на кнопку.
Приложение должно остановится.
1
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 53
01.05.2014, 18:52  [ТС]
Вы правы, что-то не то здесь..

Добавлено через 17 минут
Действительно, когда ставлю break point на этот case приложение не останавливается. Не подскажите, как это можно исправить?
0
 Аватар для Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
01.05.2014, 18:56
Цитата Сообщение от DEMONICK Посмотреть сообщение
Действительно, когда ставлю break point на этот case приложение не останавливается. Не подскажите, как это можно исправить?
Выложите весь код функции. Ошибка где-то там.
0
0 / 0 / 0
Регистрация: 04.04.2014
Сообщений: 53
01.05.2014, 19:12  [ТС]
Этой? На всякий случай прикрепляю проект
Кликните здесь для просмотра всего текста
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
case IDC_BUTTON2:
                {   
            sprintf(buf,("Walking heap %#p...\n\n"), hMemHeap);
            //SetWindowText(GetDlgItem(hDlg, IDC_LIST1), L"");
        MessageBoxA(hDlg, buf,0,MB_OK);
            //SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
                Entry.lpData = NULL;
    while (HeapWalk(hMemHeap, &Entry) != FALSE) {
        if ((Entry.wFlags & PROCESS_HEAP_ENTRY_BUSY) != 0) {
            sprintf(buf,("Allocated block"));
            SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
 
 
            if ((Entry.wFlags & PROCESS_HEAP_ENTRY_MOVEABLE) != 0) {
                sprintf(buf,(", movable with HANDLE %#p"), Entry.Block.hMem);
            }
 
            if ((Entry.wFlags & PROCESS_HEAP_ENTRY_DDESHARE) != 0) {
                sprintf(buf,(", DDESHARE"));
            }
        }
        else if ((Entry.wFlags & PROCESS_HEAP_REGION) != 0) {
            sprintf(buf,("Region\n  %d bytes committed\n")); 
                   sprintf (buf,("  %d bytes uncommitted\n  First block address: %#p\n")); 
                   sprintf  (buf,("  Last block address: %#p\n"),
                     Entry.Region.dwCommittedSize,
                     Entry.Region.dwUnCommittedSize,
                     Entry.Region.lpFirstBlock,
                     Entry.Region.lpLastBlock);
                   SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
        }
        else if ((Entry.wFlags & PROCESS_HEAP_UNCOMMITTED_RANGE) != 0) {
            sprintf(buf,("Uncommitted range\n"));
            SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
        }
        else {
            sprintf(buf,("Block\n"));
        }
 
        sprintf(buf,("  Data portion begins at: %#p\n  Size: %d bytes\n"), //, or ;
                 sprintf(buf,("  Overhead: %d bytes\n  Region index: %d\n\n"),
                 Entry.lpData,
                 Entry.cbData,
                 Entry.cbOverhead,
                 Entry.iRegionIndex));
        SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
        /*SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
        SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
        SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf); */
    }
    LastError = GetLastError();
    if (LastError != ERROR_NO_MORE_ITEMS) {
        sprintf(buf,("HeapWalk failed with LastError %d.\n"), LastError);
        SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
    }
 
    //
    // Unlock the heap to allow other threads to access the heap after 
    // enumeration has completed.
    //
    if (HeapUnlock(hMemHeap) == FALSE) {
        sprintf(buf,("Failed to unlock heap with LastError %d.\n"),
                 GetLastError());
        SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
    }
 
    //
    // When a process terminates, allocated memory is reclaimed by the operating
    // system so it is not really necessary to call HeapDestroy in this example.
    // However, it may be advisable to call HeapDestroy in a longer running
    // application.
    //
    if (HeapDestroy(hMemHeap) == FALSE) {
        sprintf(buf,("Failed to destroy heap with LastError %d.\n"),
                 GetLastError());
        SendDlgItemMessageA(hDlg, IDC_LIST1, LB_ADDSTRING,NULL,(LPARAM)buf);
    }
                };break;
 
    return 0;
    //return TRUE;
}
Вложения
Тип файла: 7z kursachh.7z (8.63 Мб, 9 просмотров)
0
 Аватар для Vaiz
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
01.05.2014, 19:27
Лучший ответ Сообщение было отмечено DEMONICK как решение

Решение

DEMONICK, вы промахнулись мимо нужного switch (wmId)

C++
1
2
3
4
5
            else MessageBox(hDlg, L"Heap was not created yet", L"Error", MB_ICONEXCLAMATION); 
            return TRUE;
//Вставьте сюда текст!
        };
        break;
Добавлено через 19 секунд
Это чуть выше чем он находится сейчас
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.05.2014, 19:27
Помогаю со студенческими работами здесь

Вывод строки из ListBox
Нужна помощь! Необходимо из ListBox вывести выделенную строку в переменную типа string! Заранее спасибо!!!

Добавление процессов в задание и вывод в ListBox
Добрый день! Помогите, пожалуйста. На форме есть ListBox1, ListBox2, Button1, Button2. ListBox1: Выводятся все запущенные...

Добавление строк c listbox на listbox WinApi
Здравствуйте, подскажите пожалуйста как правильно сделать, чтобы выделенные строки в первом листбоксе автоматически добавлялись на второй...

Как реализовать по нажатию на выбранный элемент ListBox вывод по нему какой либо информации в другом ListBox
Приветствую... Нужна ваша помощь. Недавно начал разбираться с шарпами. Знание синтаксиса хромает... Решил написать программу которая будет...

Вывод в ListBox
Доброго времени суток! Пишу интернет-магазин, нужно вывести в ListBox список категорий, которые есть в магазине. Ошибок никаких не...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru