Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];

Вниз

Мастера, помогите советом!   Найти похожие ветки 

 
Barman   (2003-01-02 11:08) [0]

С Новым годом всех!

У меня такой вопрос: как сделать так, чтобы по нажатию на кнопку "закрыть" (наверху с крестиком, не знаю как правильно ее назвать...) программа не закрывалась?
Пробовал писать в событии OnCloseQuery вот так:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:= False;
Form1.Hide;
end;

Но тогда Windows не может завершить свою работу, если работает программа! Я понимаю, что надо ловить каким-то образом сообщение о закрытии, но я не знаю как :-(


 
Anatoly Podgoretsky   (2003-01-02 11:13) [1]

Обрабатывай сообщение WM_QUERYENDSESSION


 
Barman   (2003-01-02 12:43) [2]

А как? Мне стыдно, но я не умею :-(
Можно пример или ссылку, где можно было бы это посмотреть?


 
Song   (2003-01-02 13:45) [3]

Procedure IsWindowsShutDown(Var Msg:TMessage); message WM_QUERYENDSESSION;

и далее пишешь обработчик в процедуре IsWindowsShutDown


 
Barman   (2003-01-02 14:45) [4]

Все равно не получается. Пишу следующее:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:= False;
Hide;
end;

Procedure TForm1.IsWindowsShutDown(var Message : TMessage);
Begin
Application.Terminate;
End;

Теперь программа закрывается, но толку от этого нет, т.к. Windows работу все равно почему-то не завершает :-( Где я не прав?


 
Song   (2003-01-02 15:35) [5]

Надо ещё результат от сообщения возвращать. См. в хэлпе что нужно вернуть.


 
Barman   (2003-01-02 17:22) [6]

Хелп посмотрел. Но ничего не понял :-(
Не связывался я с сообщениями никогда, поэтому совета и прошу...


 
Song   (2003-01-02 17:56) [7]

Return Values

If an application can terminate conveniently, it should return TRUE; otherwise, it should return FALSE.


 
alvin   (2003-01-02 18:31) [8]

Попробуй так :
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caNone;
end;

Должно работать


 
lamachok   (2003-01-02 21:58) [9]

вот вот надо обрабатывать onclose


 
Mihey   (2003-01-02 22:41) [10]

Убрать кнопку нафиг (или ты прикол какой бацаешь?)!

procedure TForm1.Button1Click(Sender: TObject);
var
hwndHandle : THANDLE;
hMenuHandle : HMENU;
begin
hwndHandle := FindWindow(nil, "Untitled - Notepad");
if (hwndHandle <> 0) then begin
hMenuHandle := GetSystemMenu(hwndHandle, FALSE);
if (hMenuHandle <> 0) then
DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
end;
end;



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
6-38420
AlexanderSK
2002-12-15 16:28
2003.02.13
Apache Dll


1-38274
Тип
2003-02-05 12:40
2003.02.13
Tree.AddChildObject имеет параметр Ptr, как освободить память?


3-38021
Pashok
2003-01-28 10:47
2003.02.13
Где ошибка в ХП


3-38011
Наташа
2003-01-24 20:08
2003.02.13
Ограничения на поля


1-38230
Оля
2003-02-05 11:55
2003.02.13
Вопрос о Chart





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский