Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2011, 11:58   #1
Last
В прострации
Форумчанин
 
Регистрация: 13.01.2009
Сообщений: 239
По умолчанию Копировать содержиое listbox

Здравствуйте, есть два listbox'а, надо скопировать элементы из одного в другой. Пишу на Си:
Код:
//IDL_LIST_FILENAME - отсюда копируем
//IDL_LIST_SEL_FILENAME - сюда копируем
case IDL_BUTTON_ADD_ALL:
         switch (whi)
          {
          case BN_CLICKED:
            {
              int i, n;
              n = SendMessage(GetDlgItem(hwnd, IDL_LIST_FILENAME) ,LB_GETCOUNT,0,0); 

              for (i = 0; i < n; i++)
              {
                  WCHAR *data;
                  data = (WCHAR*)SendMessage(GetDlgItem(hwnd, IDL_LIST_FILENAME),  LB_GETTEXT, (WPARAM)i, 0);
                  SendMessage(GetDlgItem(hwnd, IDL_LIST_SEL_FILENAME),LB_ADDSTRING,0,data);
              }
            }
          }
          return 0;
Подскажите пожалуйста, что я делаю не так?
Пол-жизни сидючи, в монитор глядючи...
Last вне форума Ответить с цитированием
Старый 07.02.2011, 17:50   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Сообщение от MSDN
LB_GETTEXT wParam = (WPARAM) index;
lParam = (LPARAM)(LPCTSTR) lpszBuffer;

Parameters

index
Zero-based index of the string to retrieve.

lpszBuffer
long pointer to the buffer to receive the string. The buffer must have sufficient space for the string and a terminating null character. An LB_GETTEXTLEN message can be sent before the LB_GETTEXT message to retrieve the length, in characters, of the string.

Return Values
The length of the string, in characters and excluding the terminating null character, indicates success. LB_ERR indicates that index does not specify a valid index.
мсдн говорит, что вы забыли передать буфер для записи)

Код:
WCHAR data[256];
SendMessage(GetDlgItem(hwnd, IDL_LIST_FILENAME),  LB_GETTEXT, (WPARAM)i, (LPARAM)data);
counter вне форума Ответить с цитированием
Старый 07.02.2011, 20:16   #3
Last
В прострации
Форумчанин
 
Регистрация: 13.01.2009
Сообщений: 239
По умолчанию

Спасибо, разобрался, код выглядит так:
Код:
case IDL_BUTTON_ADD_ALL:
         switch (whi)
          {
          case BN_CLICKED:
            {
              int i = 0, n;
              n = SendMessage(GetDlgItem(hwnd, IDL_LIST_FILENAME) ,LB_GETCOUNT,0,0);
              for (i = 0; i < n; i++)
              {
                  LPTSTR *String = (LPTSTR*)malloc(1024*sizeof(TCHAR));
                  SendMessage(GetDlgItem(hwnd, IDL_LIST_FILENAME), LB_GETTEXT, i, (LPARAM)String);
                  SendMessage(GetDlgItem(hwnd, IDL_LIST_SEL_FILENAME), LB_ADDSTRING, 0, (LPARAM)String);
                  free(String);
              }
            }
          }
          return 0;
Пол-жизни сидючи, в монитор глядючи...
Last вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копировать форму MAZADA Общие вопросы Delphi 0 06.10.2010 15:08
Копировать текст из webbrowser в memo (включить ctrl+c ctrl+v) копировать - вставить Alar Работа с сетью в Delphi 13 12.07.2010 18:16
как добавить в listbox файлы(пишу с помощью bassplayer)(Listbox+opendialog=play) blackstersl Общие вопросы Delphi 11 09.06.2010 13:23
копировать значение Demonmov Microsoft Office Excel 6 17.02.2010 16:51
Как копировать файл в String из ListBox? dolphin705 Общие вопросы Delphi 10 04.05.2009 16:53