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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2009, 16:16   #1
ereality
Пользователь
 
Аватар для ereality
 
Регистрация: 18.07.2007
Сообщений: 22
Восклицание [Win32 API/Delphi] Нужна помощь с combobox

Всем доброго времени суток. Появилась необходимость в помощи!
Дело в том, что выдали задание, которое заключается в следующем:
Цитата:
"В главном окне создать дочернее окно класса COMBOBOX – «выпа-дающий список», состоящий из трех элементов. При выборе элемента в окне сообщения выводится текст выбранного элемента".
Кто знает как на вин апи заполнить текстом комбобокс?
Все, кроме этого получается.
SendDlgItemMessage кажись надо юзать - но что то у меня не катит.

Гуглил, ничего толком не нашел, нашел только статью с картинками работающего combobox, что собственно и должно в итоге получиться, но исходника самой проги там нет...





Уже все сделал и форму и label на ней и сам cobobox... правда он пустой. И нажатия криво обрабатывает - не перерисовывается.

Свой исходник засунул во вложения...

Желательно доделать все до выходных (суббота-воскресенье: 7-8 ноября)
Вложения
Тип файла: rar API.rar (9.4 Кб, 25 просмотров)

Последний раз редактировалось ereality; 04.11.2009 в 16:19.
ereality вне форума Ответить с цитированием
Старый 04.11.2009, 16:50   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

getdlgitemtext,messagebox.
Этих API функций думаю будет вполне достаточно
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 04.11.2009, 17:15   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
ereality
Достаешь себе прогу APIx.
РАстягиваешь в ней на форме комбилк, отправляешь в делфи полученный ею код и выполняешь, поправив код по условию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2009, 21:15   #4
ereality
Пользователь
 
Аватар для ereality
 
Регистрация: 18.07.2007
Сообщений: 22
Печаль

что-то в этом ключе я и делал, я не вкуриваю в последние два параметра этой функции - lParam и rParam.

Код:
SendDlgItemMessage(hCombobox,3,LB_ADDSTRING,0, Integer(PChar('блабла')));
Можете скачать и посмотреть исходник из вложения, которое прикрепил в первом сообщении?

Последний раз редактировалось ereality; 04.11.2009 в 22:33.
ereality вне форума Ответить с цитированием
Старый 04.11.2009, 22:52   #5
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Код:
GetWindowText(hCombobox,PAnsiChar(s),length(s));
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 04.11.2009, 23:02   #6
ereality
Пользователь
 
Аватар для ereality
 
Регистрация: 18.07.2007
Сообщений: 22
По умолчанию

Вот чем я пытаюсь победить.
Код:
WM_COMMAND:
if (lParam = Button1) and (HiWord(wParam) = BN_CLICKED) then
     //OnClick компонента Button1
     begin
       SendMessage(Combobox1, WM_GETTEXT, 80, LongInt(szBuf));
       SendMessage(Label1, WM_SETTEXT, 80, LongInt(szBuf));
     end
где szBuf - PChar

После выполнения - Label1 чистый как слеза.
если написать

Код:
SendMessage(Label1, WM_SETTEXT, 80, LongInt(PChar('12345')));
то лабел успешно принимает 12345.
Видимо у мну проблемы с чтением текста комбобокса...

Так же не срабатывает
Код:
GetWindowText(ComboBox1, szBuf, 80);
Эффект - тот же...
ereality вне форума Ответить с цитированием
Старый 04.11.2009, 23:11   #7
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Сделал так и работает:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
szbuf:string;
...
begin
...
setlength(szbuf,80);
GetWindowText(ComboBox1, pansichar(szBuf), 80);
SendMessage(Label1 , WM_SETTEXT, 80, LongInt(szBuf));
...
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 05.11.2009, 15:22   #8
ereality
Пользователь
 
Аватар для ereality
 
Регистрация: 18.07.2007
Сообщений: 22
По умолчанию

Цитата:
Сообщение от russian-stalker Посмотреть сообщение
Сделал так и работает:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
szbuf:string;
...
begin
...
setlength(szbuf,80);
GetWindowText(ComboBox1, pansichar(szBuf), 80);
SendMessage(Label1 , WM_SETTEXT, 80, LongInt(szBuf));
...
end;
Спасибо, работает.
Теперь еще одна проблема - как это загнать в процедуру обработки щелчка на выбранном пункте...

Код:
if (lParam = ComboBox1) and (HiWord(wParam) = CBN_SELCHANGE) then
   //OnClick компонента ComboBox1
   begin

setlength(szbuf, 80);
idCombobox := GetDlgCtrlId(Combobox1);
GetWindowText(ComboBox1, pansichar(szBuf), 80);
SendMessage(Label1 , WM_SETTEXT, 80, LongInt(szBuf));

  end;
ereality вне форума Ответить с цитированием
Старый 07.11.2009, 22:48   #9
ereality
Пользователь
 
Аватар для ereality
 
Регистрация: 18.07.2007
Сообщений: 22
По умолчанию

Все, сделал.
Тема не актуальна
ereality вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Win32 Api! alexov Общие вопросы C/C++ 7 09.02.2009 22:25
ML.exe не является приложением Win32 -но это бред! нужна помощь veter_s_morya Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 06.10.2008 12:34
Что такое Win32 API Slovinsky Свободное общение 10 29.10.2007 10:46
Всем кого интересует Win32 API Drone Win Api 6 13.02.2007 20:37