Главная страница
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.014 c
15-1202184216
Dmitry S
2008-02-05 07:03
2008.03.16
проигрывание midi


2-1203096893
hloppooop
2008-02-15 20:34
2008.03.16
TreeView random item color


15-1201798852
NiGGa
2008-01-31 20:00
2008.03.16
Компонент отображающий графики


3-1193210453
CruiserD
2007-10-24 11:20
2008.03.16
Ошибка при подключении к БД


15-1202066864
Student00
2008-02-03 22:27
2008.03.16
Экспорт из Delphi 7 в xml