- PR -

VC++.NETでのオーバーライド

1
投稿者投稿内容
とび
会議室デビュー日: 2005/03/02
投稿数: 12
投稿日時: 2005-03-04 21:12
お世話になります。
VC++.NET(Windowsコントロールライブラリ)で開発を行っています。

VC++.NETでのオーバーライドはどのように行えば良いのでしょうか?
C#.NETではクラスビューでオーバーライドしたいメソッド上で右クリック
をすると「追加」の項目が表示されますが、VC++.NETでは表示されません。

やりたい事はButtonコントロールをカスタムし、指定したイメージ
画像以外は描画しない処理を行いたいです(フォーカス時のフォーカス
枠を表示したくない)。
C#.NETでは下記のソースで解決したのですが、VC++.NETでは
どのようにすればよいのかが分かりません。

protected override void OnPaint(PaintEventArgs pevent)
{
  // TODO: ButtonEX.OnPaint 実装を追加します。
  if(this.Image != null)
  {
pevent.Graphics.DrawImage(this.Image,0,0,this.Width,this.Height);
  }
  //base.OnPaint (pevent);
}


以上よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-03-04 21:45
同じように“書けば”いいだけ。
_________________
とび
会議室デビュー日: 2005/03/02
投稿数: 12
投稿日時: 2005-03-05 11:18
Jittaさんご返答ありがとうございます。

下記のように書いて無事解決しました。
protected:
 void OnPaint(PaintEventArgs *pevent)
 {
   if(! this->Image){
pevent->Graphics->DrawImage(this->Image,0,0,this->Width,this>Height);
   }
}

重ねての質問で申し訳ないのですが、同じ事をWindowsアプリケーション
(フォーム上にボタンが一つ)で行ったのですが、ボタン上にフォーカス枠
が表示されてしまいます。ボタンの描画処理もオーバーライドしたOnPaint
に処理は行かないのでしょうか?

protected:
 void OnPaint(PaintEventArgs *pevent)
 {
   if(! button1->Image){
pevent->Graphics->DrawImage(button1->Image,0,0,
button1->Width,button1>Height);
   }
}
以上よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)