- - PR -
継承されたフォームに貼り付けられたコンポーネントの取得方法
«前のページへ
1|2|3
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-02-28 19:58
イベントを使ってもいけそうな気がします。
親Form側: 「タイマーを止めろ」イベントを定義する Loadイベントハンドラ内で「タイマーを止めろ」イベントをRaiseする 子Form側: 「タイマーを止めろ」イベントハンドラを実装する その中で止めたいタイマーをすべて処理する タイマーを持たない子Formはイベントハンドラを書かなければ良い すでに子Formが何十個も実装済みだと修正が大変そうですけどね。 基底クラスが派生クラスのことを知っていなければならないという実装は やはりかなりいびつに感じます。 #質問の意味を取り違えていたらごめんなさい。 | ||||||||
|
投稿日時: 2008-02-28 20:52
既出ですが、それだと、派生側で別の目的で別のタイマを追加したときなどに破綻しませんか? どっちがどのタイマか、基底クラスでは判定不可のはず。 | ||||||||
|
投稿日時: 2008-02-28 21:23
使用目的を考えず全てのタイマー(Windows Timer)を止めるのが
目的であればWndProcあたりをオーバーライドしてWM_TIMERを すべて捨てる方が簡単かもしれません。 オブジェクト指向の基底・派生等を考えるより機械的に考えた方が 合理的と思います。 | ||||||||
|
投稿日時: 2008-02-29 09:12
破綻するか否かは私には判断できません。 なぜなら、目的なんて関係なく、とにかくTimerを取りたいのかもしれないからです。 味噌汁まんぼうさんに聞かないとそこは分かりませんが、 ただ先に「思っていた動作が出来ました」とあるので、本件についてだけ言えば、 破綻していなかったのではないでしょうか? | ||||||||
|
投稿日時: 2008-02-29 12:02
☆takaciniさん
ご回答ありがとうございます。 イベントを使ったやり方というのは思いつきませんでした。 今後の参考にさせていただきます。 ☆渋木宏明さん ご回答ありがとうございます。 >派生側で別の目的で別のタイマを追加したときなどに破綻しませんか? >どっちがどのタイマか、基底クラスでは判定不可のはず。 たしかに私の示したサンプルコードでは基底クラスのタイマか派生側のタイマか区別できません。 今回は、どちらのタイマであるかに関係なく、一律に処理をしたかったので、 区別は不要としていました。 確かに、派生側が、基底クラスに処理されたくないタイマを使いたい、 と思った場合は、このやり方ではだめだと思います。 が、とりあえず今回はその必要はなかったので、そこまでは検討しておりません。 ☆indigo-xさん ご回答ありがとうございます。 なるほど、より根幹で処理をするというのも手ですね。 これも思いつきませんでした。 今後の参考にさせていただきます。 ☆ガルマ・ザビ ご回答ありがとうございます。 >目的なんて関係なく、とにかくTimerを取りたいのかもしれないからです。 そうですね。今回はこの仕様で考えておりました。 |
«前のページへ
1|2|3