Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
11-1186120923
Alexey_k
2007-08-03 10:02
2008.03.16
Нужен файл KOL_unicode.inc


2-1203088715
aids
2008-02-15 18:18
2008.03.16
Потоки и поиск


2-1203247667
Knob
2008-02-17 14:27
2008.03.16
FTP соединение


3-1193483771
TheEd
2007-10-27 15:16
2008.03.16
Оптимизация сетевого траффика


2-1203091297
i
2008-02-15 19:01
2008.03.16
аналог ExtractFIlePath на winapi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский