Главная страница
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.48 MB
Время: 0.013 c
4-1185204646
Nikfel
2007-07-23 19:30
2008.03.16
Как отловить нажатие кнопки мыши.


8-1150913139
Layner
2006-06-21 22:05
2008.03.16
Примеры для TVideoGrabber (v 7.2-7.3) ищу


2-1203079733
SerMaxx
2008-02-15 15:48
2008.03.16
использование DBGrid или Grid


2-1203406857
dmitry_12_08_73
2008-02-19 10:40
2008.03.16
Создание рамки с бегущими муравьями


15-1202376215
ANB
2008-02-07 12:23
2008.03.16
"Народные ИПО" - кидалово ?