イベント ハンドラの戻り値型は void(C++)
ハンドラ型の定義 への移動
イベント ハンドラの戻り値の型は void でなければなりません。イベント ハンドラの戻り値型が void であっても、引数を参照で渡すことにより、ユーザー コードで情報を取得できます。その場合は、ユーザーのコードで値を変更しなくてもよいように、必ず引数に有効な値を割り当ててから、ハンドラを呼び出します。
イベント ハンドラに引数を参照で渡す例としては、TKeyPressEvent 型のキー押下イベントがあります。TKeyPressEvent には 2 つの引数が定義されています。1 つは、どのオブジェクトでイベントが発生したかを示すもので、もう 1 つは、どのキーが押されたかを示すものです。
typedef void __fastcall (__closure *TKeyPressEvent)(TObject *Sender, Char &Key);
通常、Key パラメータには、ユーザーに押されたキーの文字が格納されます。ただし、場合によっては、コンポーネントのユーザーがその文字を変更することもあります。たとえば、編集コントロールですべての文字を強制的に大文字にするような場合です。その場合、ユーザーは、キー入力のハンドラを次のように定義できます。
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, Char &Key) { Key = UpCase(Key); }
また、参照渡しの引数を使用して、ユーザーがデフォルトの処理をオーバーライドできるようにすることも可能です。