Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.16;
Скачать: CL | DM;

Вниз

MessageBox + MB_HELP   Найти похожие ветки 

 
{RASkov} ©   (2008-02-20 00:05) [0]

Реально ли поймать нажатие кнопки "Справка" в таком варианте кода:

program Project1;

uses Windows;

begin
case MessageBox(0, "Text", "Кэпшен", MB_YESNOCANCEL or MB_HELP or MB_SYSTEMMODAL) of
 idYes: MessageBox(0, "Pressed Yes", "Кэпшен", 0);
 idNo: MessageBox(0, "Pressed No", "Кэпшен", 0);
 else MessageBox(0, "Pressed Cancel", "Кэпшен", 0);
end;
end.


Т.е. сообщение WM_HELP "ушло в никуда"?
Конкретно в моем случае хотелось бы поймать нажатие "Справка" и закрыть данное сообщение с вызовом процедуры, например, DoHelp;


 
чувак   (2008-02-20 00:34) [1]

В первом параметре MessageBox нужно указать хендл окна, которому будет посылаться сообщение WM_HELP.
У тебя 0, поэтому сообщение и "идет в никуда".


 
{RASkov} ©   (2008-02-20 00:50) [2]

> [1] чувак   (20.02.08 00:34)
> В первом параметре MessageBox нужно указать хендл окна,
> которому будет посылаться сообщение WM_HELP.
> У тебя 0, поэтому сообщение и "идет в никуда".

Да это я знаю.... :( Походу я просто туплю....
Нет у меня ни одного оконного объекта.... поэтому и - ноль - первым параметром...
Получается в данном случае походу никак :(

Тогда вот такой вопрос:
Если примерный "аналог" данной функции(MessageBox) написать на АПИ - кода много будет? :)
Собственно что нужно от показываемого окна:
 одно текстовое поле
 четыре кнопки
при нажатии которых, закрывалось бы окошко с результатом типа Integer...

ЗЫ Эх.. апи, апи...( Буду сейчас перебирать примеры от Dib@zol"а :)


 
guav ©   (2008-02-20 00:53) [3]

MessageBoxIndirect


 
чувак   (2008-02-20 02:16) [4]

У меня MessageBoxIndirect почему-то вместо integer возвращает boolean o_0


 
{RASkov} ©   (2008-02-20 02:18) [5]

> [4] чувак   (20.02.08 02:16)

:) У меня тоже :)

Но я вот так сделал:
program Project1;
uses Windows;

procedure DoHelp(var lpHelpInfo: THelpInfo);
begin
 MessageBox(0, "Pressed HELP", "Кэпшен", MB_SYSTEMMODAL);
end;

var Msg: TMSGBOXPARAMSW; Res: LongBool;
begin
 Msg.cbSize:= SizeOf(Msg);
 Msg.hwndOwner:= 0;
 Msg.hInstance:= hInstance;
 Msg.lpszText:= "Сообщение с кнопкой "Справка"";
 Msg.lpszCaption:= "Кэпшен";
 Msg.dwStyle:= MB_YESNOCANCEL or MB_HELP or MB_DEFBUTTON3 or MB_SYSTEMMODAL;
 Msg.lpszIcon:= nil;
 Msg.dwContextHelpId:= 0;
 Msg.lpfnMsgBoxCallback:= DoHelp;
 Msg.dwLanguageId:= LANG_RUSSIAN;
 Res:=MessageBoxIndirectW(Msg);
 if Res then case Integer(Res) of
  IDYES: MessageBox(0, "Pressed YES", "Кэпшен", MB_SYSTEMMODAL);
  IDNO: MessageBox(0, "Pressed NO", "Кэпшен", MB_SYSTEMMODAL);
  else MessageBox(0, "Pressed CANCEL", "Кэпшен", MB_SYSTEMMODAL);
 end;
end.

вроде работает )

> [3] guav ©   (20.02.08 00:53)

Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2008.03.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
2-1203124705
DJ_UZer
2008-02-16 04:18
2008.03.16
Ссылка


15-1202286490
Fredy314
2008-02-06 11:28
2008.03.16
Балансирование трафика


15-1202479970
ketmar
2008-02-08 17:12
2008.03.16
чудные каменты…


15-1202184216
Dmitry S
2008-02-05 07:03
2008.03.16
проигрывание midi


11-1185173900
rvi
2007-07-23 10:58
2008.03.16
Отчет