Сейчас на форуме: (+5 невидимых)

 eXeL@B —› Программирование —› Хак COMBOBOX'а
Посл.ответ Сообщение


Ранг: 58.1 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 21 июля 2007 16:05
· Личное сообщение · #1

Как можно получить адрес на данные, которые использует винда, если создать с помощью CreateWindowEx контрол в окошке (COMBOBOX)? Это нужно, чтобы разобраться в чём проблема при добавлении через SendMessage новых текстовых элементов в COMBOBOX

program winmin;
uses windows,messages;
var
wc:TWndClassEx;
MainWnd,cmb:HWND;
Mesg:TMsg;
str:string;
function WindowProc(wnd:HWND;Msg:Integer;Wparam:Wparam;Lparam:Lparam):Lresult;s tdcall;
begin
if msg=wm_destroy then
begin
Result:=0;
exit;
end;
Result:=DefWindowProc(wnd,msg,wparam,lparam);
end;
var xPos,yPos,nWidth,nHeight:Integer;
begin
wc.cbSize:=sizeof(wc);
wc.style:=cs_hredraw or cs_vredraw;
wc.lpfnWndProc:=@WindowProc;
wc.cbClsExtra:=0;
wc.cbWndExtra:=0;
wc.hInstance:=HInstance;
wc.hIcon:=LoadIcon(0,idi_application);
wc.hCursor:=LoadCursor(0,idc_arrow);
wc.hbrBackground:=COLOR_BTNFACE+1;
wc.lpszMenuName:=nil;
wc.lpszClassName:='WinMin:Main';
RegisterClassEx(wc);
xPos:=1;
yPos:=1;
nWidth:=260;
nHeight:=260;
MainWnd:=CreateWindowEx
(
WS_EX_APPWINDOW,'WinMin:Main','dynamic form caption',
ws_overlappedwindow,
xPos,yPos,nWidth,nHeight,0,0,
Hinstance,nil
);
ShowWindow(MainWnd,CmdShow);
cmb:=CreateWindowEx
(
0,'COMBOBOX','combo caption',
WS_CHILD or WS_VISIBLE or WS_TABSTOP or WS_VSCROLL or
CBS_DROPDOWN or CBS_HASSTRINGS or CBS_OWNERDRAWFIXED,
xPos+10,yPos+20,200,100,MainWnd,0,
Hinstance,nil
);

str:='first';
SendMessage(cmb,CB_ADDSTRING,0,dword(str));

ShowWindow(cmb,CmdShow);
While GetMessage(Mesg,0,0,0) do
begin
TranslateMessage(Mesg);
DispatchMessage(Mesg)
end
end.

Вот пример кода на Delphi, где создаётся окошко и на нём COMBOBOX и после выполнения элемент как бы есть и вставляется в поле ввода пр нажатии, но его не видно в списке, тоесть просто белое поле...
И есть ли способ получения данных хранимых об созданных контролах, например для кнопок (класс BUTTON)?



Ранг: 15.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 21 июля 2007 16:07
· Личное сообщение · #2

будьте проще
в мсдн есть прекрасный пример




Ранг: 58.1 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 21 июля 2007 16:27
· Личное сообщение · #3

Там походу пример с использованием ресурса диалога, но ведь майкрософт сделали механизм создания через CreateWindowEx и класс сделала "combobox" И можно ли вообще таким способом создать COMBOBOX?, тоесть например если ещё в функцию обработки сообщений добавить чё-нить...



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 21 июля 2007 20:06
· Личное сообщение · #4

Если знаешь МАСМ, то сделай поиск по форуму на слово "AZProtect", найдешь исходники и там будет тебе комбобокс.

-----
Я медленно снимаю с неё UPX... *FF_User*





Ранг: 58.1 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 22 июля 2007 02:13
· Личное сообщение · #5

MASM знаю... спасибо!!


 eXeL@B —› Программирование —› Хак COMBOBOX'а
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати