VC++2005でコントロールのイベントを継承するには?

解決


ゴン太  2007-07-25 21:17:55  No: 65832  IP: 192.*.*.*

DateTimePickerコントロールを継承したコントロールを作成していますが、イベントのオーバーライドを行うとコンパイルエラーとなってしまいます。
どのようにしたらよいのか教えてください。

プロジェクトはVC++2005のWindowsフォームライブラリコントロールを使用しています。

###  エラー内容  ###

error C2144: 構文エラー : 'void' は ';' によって先行されなければなりません。
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません


###  コード  ###

#pragma once
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

namespace DateCtrl2 {

  public ref class DateCtrl2Control : public System::Windows::Forms::DateTimePicker {





protected: override void GotFocus(System::Object ^s, System::EventArgs ^e)
{

}

編集 削除
Blue  2007-07-25 23:16:53  No: 65833  IP: 192.*.*.*

>protected: override void GotFocus(System::Object ^s, System::EventArgs ^e)
はなにを参考にしていますか?
C#?
文法が違うのでMSDNできちんと確認したほうよいでしょう。
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.gotfocus(VS.80).aspx

というか、イベントってオーバーライドして何かできるようになるんでしたっけ?
GotFocusしたときになにかさせたいならデフォルトでイベントを登録しておく
ってことでできないのでしたっけ?

編集 削除
YuO  2007-07-25 23:33:50  No: 65834  IP: 192.*.*.*

イベント自体が仮想であれば,イベントのオーバーライド自体は可能です。
まぁ,普通は対になるOnGotFocusをオーバーライドすると思いますが……。

編集 削除
ゴン太  2007-07-26 00:13:12  No: 65835  IP: 192.*.*.*

回答ありがとうございます。
お恥ずかしいですが、初心者のものでわかりませんでした。

OnGotFocusをオーバーライドをする方法をためしておりますが、以下のようなエラーが発生してしまいます。

コンパイル結果通り、'virtual'、'new'をつけてみましたがうまくいきません。お手数かけますが教えていただけますでしょうか。

###  エラー内容  ###

基本 ref クラス メソッド 'System::Windows::Forms::Control::OnGotFocus' と一致しますが、'virtual'、'new' または 'override' に設定されていません。'new' (および 'virtual' でない) を仮定します

###  コード  ###
protected: override void OnGotFocus(System::EventArgs ^e)
{

}

編集 削除
Blue  2007-07-26 00:20:51  No: 65836  IP: 192.*.*.*

ですので、MSDNをきちんと確認してください。
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.ongotfocus(VS.80).aspx
より

protected:
virtual void OnGotFocus (
  EventArgs^ e
)

ですから、overrideする場合は後ろにoverrideキーワードを指定します。

Visual C++ Language Reference
override
http://msdn2.microsoft.com/ja-jp/library/41w3sh1c(VS.80).aspx

編集 削除
ゴン太  2007-07-26 09:22:11  No: 65837  IP: 192.*.*.*

ようやく理解できました。
ありがとうございます。

編集 削除