Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кнопка на statusbar [D7, WinXP]


Феня ©   (2006-09-22 17:22:00) 

У меня на окне есть два компонета :statusbar и button.
..
Handle:=CreateWindowEx(0,'Form','ХХХ',$400000 or $10000000,219,116, 275,120,0,0,hInst nil);
...
StatusBar1:=CreateWindow('msctls_statusbar32',nil,$40000000 or $10000000,0,0,0,50,Handle,1,hInst,0);

если я напишу
..
Button3:=CreateWindow('Button','Exit',$40000000 or $10000000 or 0,  203,4,64,17,StatusBar1,0,0,nil);

то в нажатие на эту кнопку не обрабатывается кодом

..
while GetMessage(Msg,0, 0, 0) do
 begin
  TranslateMessage(Msg);
  DispatchMessage(Msg);
 end;

а если написать хендл главного окна, то все рабоает. Может кому то покажется этот вопрос смешным, но я не понимаю, где ошибка...


Ketmar   (2006-09-22 21:29:00) [1]

>[8] __Гость__ 22-Sep-2006, 21:15
поулыбался.


__Гость__   (2006-09-22 21:15:00) [2]

кетмар, что ты развопился как слон, которого смертельно ранили бананом???? Человек хочет научиться программировать на апи, а ты на него сразу налетаешь!!! он просто ошибся (вместо компонента  надо было написать элемента, и всего, а вони от тебя, как общественного туалета, который не убирали неделю). если ты такой умный, помоги ему, а если НЕТ, то тебе молчать надо (и книжки читать).

А тебе феня, удачи и не обращай внимания на некоторых участников, как говорится в семье не без.....


Ketmar   (2006-09-22 18:31:00) [3]

т.е. не надо больше писать на API, пока не проштудируешь соответствующую литературу. более того, после фразы "есть два компонента" и следующим за ней CreateWindowEx() вообще мало о чём можно говорить.


Феня   (2006-09-22 17:46:00) [4]

т.е? %-(


clickmaker   (2006-09-22 17:43:00) [5]


> [4] Феня   (22.09.06 17:41)

он-то ловит все. Но вся правда в волшебной строчке
DispatchMessage(Msg);


Феня   (2006-09-22 17:41:00) [6]

а разве то, что я указал
..
while GetMessage(Msg,0, 0, 0) do

он ловит не все сообщения??


clickmaker   (2006-09-22 17:37:00) [7]


> [2] Феня   (22.09.06 17:30)

Для тех, кто в танке еще раз: если кнопка лежит на статусбаре, то и ловить WM_COMMAND от нее надо в WindowProc статусбара, а не главного окна.


Феня   (2006-09-22 17:30:00) [8]

ну просто как то привык так писать.....
у меня только (пока) одно окно и обрабатываю его

..
function WindowProc(hwnd, msg, wparam, lparam: longint): longint; stdcall;
begin
 Result := DefWindowProc(hwnd, msg, wparam, lparam);
 case Msg of
  $0111 :begin             //wm_command
               if (lParam = Bstart ) and (HiWord(wParam) = 0) then start;
               if (lParam = Button3) and (HiWord(wParam) = 0) then shutdown;
               if (lParam = BExit) and (HiWord(wParam) = 0) then ShowWindow(S_handle,  0);
              end;
  $0002 : ShutDown;       //wm_destroy
  $0113 : _timer;          //wm_timer

end;
end;


clickmaker   (2006-09-22 17:25:00) [9]


> $40000000 or $10000000

матерь божья... а чем WS_XXX не угодили?
по теме: кнопка шлет WM_COMMAND окну, на котором она лежит. Вот и думай. Где ты обрабатываешь WM_COMMAND?


Наверх

Титульная страница Поиск, карта сайта Написать письмо