Форум: "Начинающим";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c