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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с WM_GETTEXT 
:(
    Опции темы
denis2105
  Дата 12.2.2009, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем здравствуйте.

Пытаюсь взять текст ComboBoxа
Код

    hComboBox    = FindWindowEx(hGroupBox, 0, _T("TComboBox"), 0);
    int iLenBuff = SendMessage(hComboBox, WM_GETTEXTLENGTH, 0, 0)+1;
        char cPassBuff[128];
        SendMessage(hComboBox, WM_GETTEXT, iLenBuff, (LPARAM)cPassBuff);
       //text = "3)4"
       cPassBuff="51'3'
                       0 
                       32')'
                       0 
                       52'4'
                       0 
                       -52
                       . . . . "
       что за 0 возвращаются?
 -----------------------------
       а если
       char cPassBuff = (char*)LocalAlloc(0, iLenBuff);
       int iRet = SendMessage(hComboBox, WM_GETTEXT, iLenBuff, (LPARAM)cPassBuff);
       то cPassBuff пустая, почему?
       


Это сообщение отредактировал(а) denis2105 - 12.2.2009, 12:21
PM MAIL   Вверх
Andrey44
Дата 12.2.2009, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Цитата

Gets a string from the list of a combo box. 

Syntax


To send this message, call the SendMessage function as follows. 
lResult = SendMessage(      // returns LRESULT in lResult     (HWND) hWndControl,      // handle to destination control     (UINT) CB_GETLBTEXT,      // message ID     (WPARAM) wParam,      // = (WPARAM) () wParam;    (LPARAM) lParam      // = (LPARAM) (LPTSTR) lParam; );   
Parameters

wParam
The zero-based index of the string to retrieve. 
lParam
A pointer to the buffer that receives the string. The buffer must have sufficient space for the string and a terminating null character. You can send a CB_GETLBTEXTLEN message prior to the CB_GETLBTEXT message to retrieve the length, in TCHARs, of the string. If it is an ANSI string this is the number of bytes, but if it is a Unicode string this is the number of characters. 
Return Value

The return value is the length of the string, in TCHARs, excluding the terminating null character. If wParam does not specify a valid index, the return value is CB_ERR. 



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Earnest
Дата 13.2.2009, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Может у тебя Юникод стоит? А буфер ты char подсовываешь...
Andrey44, текст в самом комбобоксе (а не в списке) получают как раз через WM_GETTEXT.


--------------------
...
PM   Вверх
Ln78
Дата 13.2.2009, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(denis2105 @  12.2.2009,  12:07 Найти цитируемый пост)
char cPassBuff = (char*)LocalAlloc(0, iLenBuff);

Имелось в виду:
Код

char* cPassBuff = (char*)LocalAlloc(0, iLenBuff);


PM MAIL   Вверх
denis2105
Дата 13.2.2009, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Earnest @ 13.2.2009,  09:06)
Может у тебя Юникод стоит? А буфер ты char подсовываешь...
Andrey44, текст в самом комбобоксе (а не в списке) получают как раз через WM_GETTEXT.

Точно))  smile 
    WCHAR *cPassBuff = (WCHAR*)LocalAlloc(0, iLenBuff);
    int iRet = SendMessage(hComboBox, WM_GETTEXT, iLenBuff, (LPARAM)cPassBuff);
СПС. 
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.0451 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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