Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > А как бы мне ... 1


Автор: DonPager 4.4.2003, 10:13
Есть вот такой небоьшой код:
Код

program Project1;
{$APPTYPE CONSOLE}
function MessageBoxA(hWnd: LongWord; lpText,
 lpCaption: PAnsiChar; uType: LongInt): Integer;
 stdcall; external 'user32.dll';
begin
while (MessageBoxA(100,'Close ?','',35)<>6)do;
end.

Вопрос в следующем :
можноли перехватить закрытие ока терминала и закрывать его действительно по выполнению ?

Автор: serious 4.4.2003, 12:36
Ну так отлавливай WM_DESTROY, а там выводи свой MessageBox или что там тебе надо.
ЗЫ чего-то я твой код не понял, а где собственно консоль?

Автор: DonPager 4.4.2003, 18:48
в том то и дело ...
Код

program Project1;
{$APPTYPE CONSOLE}
{=======================================================================}
function GetConsoleCP: LongWord; stdcall; external 'kernel32.dll';
{=======================================================================}
function SetConsoleCtrlHandler(HandlerRoutine: Pointer; Add: Boolean): Boolean; stdcall;  external 'kernel32.dll';
{=======================================================================}
function MessageBoxA(hWnd: LongWord; lpText, lpCaption: PAnsiChar; uType: LongInt): Integer; stdcall; external 'user32.dll';
{=======================================================================}
BEGIN
while true do
 if SetConsoleCtrlHandler(ptr(GetConsoleCP), false)then
  if (MessageBoxA(100,'Close ?','',35)=6) then exit
  else
  SetConsoleCtrlHandler(ptr(GetConsoleCP), false);
END.

... в данном случае закрытие происходит не вызывая MessageBox ....
а мне бы хотелоь чтобы по закрытию он спрашивал закрыть али нет

Автор: serious 4.4.2003, 19:54
А если код консоли переписать в легкую, так, чтобы можно было WM_DESTROY ловить. Сделать по типу оконных приложений на WinAPI?

Автор: DonPager 6.4.2003, 17:03
:o я тебя не совсенм понял...

Автор: serious 6.4.2003, 20:03
Как думаешь, вот такое прокатит?
function WindowProc (Window : HWND; Message : integer; wParam : wParam;
lParam : lParam) : lResult; stdcall;

Видоизменить ее немного надо...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)