ExitProccesProc w C++ builder

0

Znazlazlem ExitProccesProc ale nie wiem za bardzo co to jest bo nie funkcja a podobno.... zmienna(ang. variable) Funkcja(?) wykonuje ostatnio procedure przed zamkniecie aplikacji. i tu pojawia sie problem bo nie za bardzo wiem jak wyglada procedura w c++. w Pascalu wiedzialem a ze C++ buildera ucze sie sam z helpow to za bardzo nie wiem. Problem moj jest taki ze potrzebuje wykonac funkcje(zamykajaca windows-mam juz napisana) w momencie gdy ktos zamknie program. Zalezy mi takze zeby uwzglednil zkillowanie programu(via Alt+Ctrl+Delete). czy ktos mi powie jak to mozna zrobi albo jak wygladala by skladnia polecenie ExitProccesProc i deklaracja potrzebnej procedury.

Deklaracja w helpie tej funkcji wyglada tak:
<font color="red"><font size="12">extern PACKAGE void __fastcall (*ExitProcessProc)(void);</span></span>

i opis tego:
<font color="red"><font size="12">Assign a value to ExitProcessProc to specify a procedure that you want to execute when the application shuts down.</span></span>

0

To wbrew pozorom jest zmienna :) Robisz tak...

void _fastcall mojazamykajacafunkcja(){ //__fastcall/_fastcall - poprobuj
  // cos tam sobie w niej robisz...
}

main(){
  ExitProcessProc=mojazamykajacafunkcja;
}

Może jedynie trzeba tą deklarację powtórzyć w programie (ze wzgledu na extern)

To tak jakbys zadeklarował w pascalu:

procedure b;
begin
end;

var a:procedure;
begin
  a:=b;
end.

// btw. c/cpp nie ma sensu stricte procedur, tylko funkcje zwracające pusty typ (void), ale takie uproszczenie nie jest jakims specjalnym błedem.

0

dzieki flabra!
Mam jeszcze dwa pytanka:

  1. co wlasciwie znaczy to extern (tudziez extern packages)
  2. czy ta "zmienna" ExitProcessProc" zadziala na zkilowanie aplikacji??
0

Słowo extern powoduje, że potrzebna jest redeklaracja...
(f1) 'Use the extern modifier to indicate that the actual storage and initial value of a variable, or body of a function, is defined in a separate source code module. Functions declared with extern are visible throughout all source files in a program, unless you redefine the function as static.'

Na skilowanie nie pomaga nic... Program jest po prostu zabijany, a wszelkie zasoby i pliki są zwalniane i zamykane przez system, nie przez aplikację.

1 użytkowników online, w tym zalogowanych: 0, gości: 1