C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: 自作クラスでWindowsMessageを受取る方法


(過去ログ 64 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■36781 / inTopicNo.1)  自作クラスでWindowsMessageを受取る方法
  
□投稿者/ たこやき (94回)-(2009/06/05(Fri) 11:10:51)

分類:[C#] 

VS C#2008
いつも大変お世話になっています。

自作のクラスAAAでWindowsMessageを取得したいのですが、
そのクラスを使用するフォームやコントロールから送ると
一応はできるのですが、AAAクラス独自に取得する方法は
ないのでしょうか。ご指導お願いします。

  using System.Drawing;
  using System.Windows.Forms;
    public partial class Form1 : Form
    {
        AAA aaa = new AAA();
        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
            aaa.受信(ref m);
        }
    }

class AAA
{
    public void 受信(ref Message m)
    {
        Console.WriteLine("メッセージ >> " + m.Msg);
    }
}


引用返信 編集キー/
■36785 / inTopicNo.2)  Re[1]: 自作クラスでWindowsMessageを受取る方法
□投稿者/ 囚人 (367回)-(2009/06/05(Fri) 11:36:16)
書いてあるコードの意図がわからんのですけど、「これ以外に方法はないか?」って訊きたいってことですか?
ウィンドウハンドルがないと Window Message は受け取れないですよ。
引用返信 編集キー/
■36789 / inTopicNo.3)  Re[2]: 自作クラスでWindowsMessageを受取る方法
□投稿者/ たこやき (95回)-(2009/06/05(Fri) 11:52:47)
No36785 (囚人 さん) に返信

囚人さん、早速にご返答下さりありがとうございます。

> これ以外に方法はないか?」って訊きたいってことですか?
そういうことです。


> ウィンドウハンドルがないと Window Message は受け取れないですよ。
そうなんですか……、と納得しながらも、素人なもんで、
ウィンドウハンドルについては無知なもんで、ちょっと勉強します。
ありがとうございました。
解決済み
引用返信 編集キー/
■36790 / inTopicNo.4)  Re[1]: 自作クラスでWindowsMessageを受取る方法
□投稿者/ επιστημη (1950回)-(2009/06/05(Fri) 11:54:54)
επιστημη さんの Web サイト
2009/06/05(Fri) 11:55:07 編集(投稿者)
Window-handleを持たんけどWndProcを処理したい、てこと?

eventで横流しし、ついでに呼んでみましょうか:

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Listener ls = new Listener(listBox1.Items);
            ' WndProcが呼ばれたら Listener.WndProc もついでに呼んでね♪
            WinMsgReceived += ls.WndProc;
        }

        public delegate void WinMsgHandler(ref Message m);
        public event WinMsgHandler WinMsgReceived;
        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
            ' ついでに呼ぶ
            if (WinMsgReceived != null) WinMsgReceived(ref m);
        }
    }

    public class Listener
    {
        private System.Collections.IList lst;
        public Listener(System.Collections.IList l) { lst = l; }
        ' ついでに呼ばれる
        public void WndProc(ref Message m)
        {
            lst.Add(m.ToString());
        }
    }

引用返信 編集キー/
■36795 / inTopicNo.5)  Re[2]: 自作クラスでWindowsMessageを受取る方法
□投稿者/ たこやき (96回)-(2009/06/05(Fri) 12:32:13)
No36790 (επιστημη さん) に返信

επιστημη さん いつもありがとうございます。
大変勉強になる指導ありがとうございます。
ただ理解するまでにもう少し時間がかかりそうなので、
とりあえずお礼申し上げます。ありがとうございました。


引用返信 編集キー/
■36798 / inTopicNo.6)  Re[2]: 自作クラスでWindowsMessageを受取る方法
□投稿者/ たこやき (97回)-(2009/06/05(Fri) 13:59:29)
No36790 (επιστημη さん) に返信

めでたく理解できました。
>WinMsgReceived += ls.WndProc;
のような形でイベントを発生させられるのは初めて知りました。
ありがとうございました。

解決済み
引用返信 編集キー/
■36826 / inTopicNo.7)  Re[3]: 自作クラスでWindowsMessageを受取る方法
□投稿者/ επιστημη (1952回)-(2009/06/05(Fri) 20:18:10)
επιστημη さんの Web サイト
> >WinMsgReceived += ls.WndProc;
> のような形でイベントを発生させられるのは初めて知りました。

てか、イベントの受け口を↑のようにして追加できるんす。

ボタン・クリックのハンドラを定義したとき、xxxx.Designer.cs を読むと
this.button1.Click += new System.EventHandler(this.button1_Click);
なんてな行が追加されてます。一度覗いてみてごらんなっせ。

解決済み
引用返信 編集キー/
■36869 / inTopicNo.8)  Re[4]: 自作クラスでWindowsMessageを受取る方法
□投稿者/ たこやき (98回)-(2009/06/08(Mon) 13:54:30)
No36826 (επιστημη さん) に返信

επιστημη さん ご指導ありがとうございます。
> this.button1.Click += new System.EventHandler(this.button1_Click);
このような自動で生成される new の形でしか使用したことがなかったのです。
別のクラスをインスタンスかしてそちらに移す方法は考えたこともなかったです。
おかげでイベント発生に幅ができました。ありがとうございました。
引用返信 編集キー/
■36870 / inTopicNo.9)  Re[5]: 自作クラスでWindowsMessageを受取る方法
□投稿者/ たこやき (99回)-(2009/06/08(Mon) 13:57:00)
解決済み忘れました。
解決済み
引用返信 編集キー/
■36885 / inTopicNo.10)  Re[5]: 自作クラスでWindowsMessageを受取る方法
□投稿者/ επιστημη (1953回)-(2009/06/09(Tue) 10:25:40)
επιστημη さんの Web サイト
> 別のクラスをインスタンスかしてそちらに移す方法は考えたこともなかったです。

あー、そゆことね。

んなわけで、Form1のボタン・クリックでForm2のメソッドに
着火したりとかゆーフザケたマネができるです♪

解決済み
引用返信 編集キー/
■36898 / inTopicNo.11)  Re[6]: 自作クラスでWindowsMessageを受取る方法
□投稿者/ たこやき (100回)-(2009/06/09(Tue) 14:59:01)
No36885 (επιστημη さん) に返信

επιστημη さんや、みなさんのご指導のおかげで、
最近ようやくボチボチ好きなことができるようになって来ました。
C#はいい言語だな!と思いつつも、目下手作りのリッチテキストボックス
(XMLと一体化した仕様のもの)を作ってやろうと悪あがきをしているので、
かんぷ無きまでに打ちのめされています。
そんな中、みなさんには本当に感謝しています。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -