Вы пытаетесь назначить отдельную функцию, где вместо этого ожидается нестатический метод класса. У вас есть два варианта:
1) переместите ваш обработчик событий в класс помощников:
class Helper
{
public:
void __fasycall myFunction(TObject *Sender)
{
...
}
};
WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
try
{
Application->Initialize();
Helper helper;
Application->OnDeactivate = &helper.myFunction;
...
}
...
}
2) оставить функцию как неклассовую функцию, но дать ей дополнительный параметр для получения указателя this
компилятора, а затем использовать структуру TMethod
, чтобы помочь вам передать ее в событие как подходящую TNotifyEvent
void __fasycall myFunction(void *pThis, TObject *Sender)
{
...
}
WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
try
{
Application->Initialize();
TMethod m;
m.Data = NULL; // passed to the pThis parameter, can be whatever you want
m.Code = &myFunction;
Application->OnDeactivate = reinterpret_cast<TNotifyEvent&>(m);
...
}
...
}
С учетом вышесказанного, TApplication::Run()
немедленно завершится, если MainForm не назначен, поэтому самое простое решение - просто перетащить компонент TApplicationEvents
в вашу MainForm, а затем вы можете назначить ему обработчик события OnDeactivate
в во время разработки.
Обновление : в качестве альтернативы, если в вашем проекте есть какие-либо объекты TForm
или TDataModule
, вы можете просто перетащить компонент TApplicationEvents
на один из них и назначить обработчик события OnDeactivate
для это во время разработки. Затем он подключится к событию OnDeactivate
приложения.