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

解決


ゴン太  2007-07-26 06:17:55  No: 65832

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-26 08:16:53  No: 65833

>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-26 08:33:50  No: 65834

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


ゴン太  2007-07-26 09:13:12  No: 65835

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

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 09:20:51  No: 65836

ですので、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 18:22:11  No: 65837

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加