none
FormにWndProcを組み込む RRS feed

  • 質問

  • .NET Flameworkを採用時に要求される基本機能を確認するため、下記サイトにあるc#の例をForm1.hに組み込みたいのですが、どのように記述すればよいか教えてください。基本機能の確認は必須ですので、採用判断の前に行いたいのです。vc++2010Express使用。
    基本機能とは、別プロセスでこのプロセス宛に送出したメッセージを受信すること。c++builderXE2では確認済です。おなじWindProcメソッドを使い、特定メッセージを処理します。

    http://www.atmarkit.co.jp/fdotnet/dotnettips/467wndproc/wndproc.html

    //Form1.hのそれらしきところを抜粋。
     protected:
    //このあたりに書けばよいかと思うのですが・・・・・
    protected override void WndProc(ref Message m){
    //チェックしたいコード(構造体mのメンバMessageを参照する)
     if(m.Message == WM_APP) std::cout << message recieve\n";//受信の確認

     base.WndProc(ref m);
    }


      /// <summary>
      /// 使用中のリソースをすべてクリーンアップします。
      /// </summary>
      ~Form1()
      {
       if (components)
       {
        delete components;
       }
      }

    ******
    c++BuilderXE2ではTForm1に記述しています。

    2012年8月15日 14:14

回答

すべての返信

  • .NET Frameworkとはあまり関係ないし、Visual StudioかC++ Builderかも関係ない質問に見受けられます。
    質問をまとめると、C++言語に於いて、派生クラスでメンバー関数をオーバーライドする方法が知りたい、それだけなように見受けられますがどうですか? (質問内容をご自身で把握できていますか?)

    # とりあえずVisual C++かVisual C++ Express Editionのフォーラムの方が適切に思います。

    • 回答の候補に設定 佐祐理 2012年8月16日 1:46
    2012年8月15日 21:48
  • .NETを使う場合について質問をしています。(.NETを使っても使わなくとも同じコードになるかどうかもわかりません)

    質問は文中に書いてあるとおりです。なにか紛らわしいところか、ご教示に際し不明な箇所があるでしょうか。あればご指摘ください。

    .NETを使う場合についてお尋ねしていますので、引き続きこちらで、ご教示をお願いします。



    • 編集済み sige2 2012年8月15日 23:49
    2012年8月15日 23:43
  • 第1目的は、「言語選定をするにあたり、基本機能が .NET Framework で実現可能か知りたい」って事で良いですか?

    2012年8月16日 0:00
  • 目的はそのとうりです。そしてそれを実際に確認したいのが、質問の趣旨です。

    今確認したい機能はそれですが、確認後、第2の本来機能である、別スレッドで長々と進んだなかで、WebBrowserで表示ページへの入力の自動化は.NETが最適であるとのご教示を検討するつもりです。

    有益なご教示をお待ちします。

    2012年8月16日 1:18
  • Visual C++ における WndProc の書き方であれば、.NET Framework フォーラムは適しないという指摘は私も同意見です。
    .NET Framework フォーラムで話題に挙げるのであれば、言語固有の書き方とか問題とかを含めずにご質問ください。
    たとえば、C#、C++、VB.NET などのコードを書かずに、.NET Framework のクラスを取り上げて文章で説明するというものであれば、.NET Framework フォーラムで違和感はありません。(Q:Form クラスに来る、WM_APP + 1 のメッセージを受け取る方法がわかりません → A:WndProc メソッドをオーバーライドしてください)

    ところで、MSDN のページの例(C++ タブを選択するなどしてください)を見た上でのご質問なのでしょうか。

    // WndProc はプロセス宛ではなく、ウィンドウ宛のメッセージを受け取る場所です。
    // TForm1 を例に出されていることから、プロセス宛ではなく、ウィンドウ宛という解釈していますが。

    2012年8月16日 1:19
    モデレータ
  • そうなのですか。初学者にはとまどいますね。でもご指摘に従い、C++で再質問します。内容はかわりませんが。

    2012年8月16日 1:31
    • 回答としてマーク 山本春海 2012年8月16日 4:10
    2012年8月16日 2:18
    モデレータ
  • こんにちは、sige2 さん。

    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。

    次回から、同じ内容の質問を新規にスレッド立てて行う場合には、お手数です元のスレッドのステータスを完了させてくださいね。
    元のスレッドに移動先のスレッドのリンクを記載して、そこに回答マークしていただければ後から見た人も分かりやすいと思います。
    複数のスレッドで同じ話題を扱う場合、両方で話が進んでしまうと質問者も回答者も混乱することが過去に多くありましたので、ご協力いただけるとうれしいです。
    恐れ入りますが、よろしくお願いいたします。
    __________________________
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2012年8月16日 4:10
  • スレッドを閉める趣旨はわかります。どのようにすればよいですか。

    回答としてマークがそれらしいですが、私は、回答としてマークは参考になった中で最善の回答かと思っていました。

    それは質問者だけがすることですか。 乞う説明箇所。



    • 編集済み sige2 2012年8月19日 1:52
    2012年8月19日 1:50
  • こんにちは、sige2 さん。

    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。
    ご質問の件ですが、もちろんsige2 さんがご理解されているように、通常、参考になった投稿に回答としてマークしていただいています。
    スレッド オーナーである sige2 さんは「回答としてマーク」を解除することもできますし、sige2 さんが参考になったと思う投稿にさらに「回答としてマーク」することもできます。

    ただ、今回の場合にはすでに別のカテゴリにも同じ内容の投稿をされていたので、混乱防止のため、続きのスレッドが分かる投稿に私のほうで回答としてマークさせていただき、こちらのスレッドを終了させていただきました。
    (複数のスレッドで同時に同じ質問をオープンすることは、混乱するのでご遠慮いただいています。)
    回答マークしたことで、後にこのスレッドを閲覧した人は続きのスレッドに誘導されます。もしこの質問に返信する場合には、続きのスレッドに返信することが自然な流れになると思います。

    「回答の候補に設定」は、サインインしていればスレッドの閲覧者は誰でもクリックすることができます。
    「回答としてマーク」は、基本的に質問者がクリックできますが、場合によってはモデレーターがクリックすることがあります。
    その都度、状況に合わせて判断いただいていいと思います。
    _________________________
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2012年8月20日 1:38