• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CLRのメッセージの送信について。)

CLRを使ったメッセージの送信方法とは?

このQ&Aのポイント
  • CLRを使って他のアプリケーションにメッセージを送信する方法をご紹介します。
  • Visual C++で新しいプロジェクトCLR Windowsフォームアプリケーションを作成し、Form1の内容を他のアプリケーションに送信する方法を解説します。
  • Form1のウィンドウプロシージャの仕組みや使い方についても説明します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

 こんばんは。  PlatformSDKさえインストールされていれば、「共通言語ランタイムサポート」をONにして、windows.hをインクルードして、普通にPostMessage()を呼び出せると思います。  逆にForm1でメッセージを受け取りたいのであるならば、WndProcをオーバーライドして  http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.wndproc(VS.80).aspx  virtual void WndProc(Message% m) override  {   switch(m.Msg)   {   case WM_???://引っ掛ける   }   this->Form::WndProc(m);  }  と言った具合だと思います。  通常はイベントで受け取ります。  http://msdn.microsoft.com/ja-jp/library/system.windows.forms.form_members(VS.80).aspx  イベントには存在しないメッセージを受け取りたい時など、余程の理由が無い限りWndProcをオーバーライドする事は無く、普段はWndProcの存在すら気にされていない感じです。

yozakura20
質問者

補足

回答ありがとうございます。Form1でもメッセージを受け取れるんですね。自分でユーザー定義のメッセージをたくさんつかうので役立ちそうです。 あとPostMessage()の問題ですが、普通に使えるんですね。 でも、自分の環境で使うと未解決のトークンというエラーでコンパイルできませんでした。それでネットで調べたところhttp://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200601/06010032.txt で同じような問題のスレがあり #pragma comment(lib, "user32.lib") を追加したところ実行することができました。 それで質問なのですが、なぜuser32.libをリンクするライブラリに登録する必要があるのでしょうか。いままでこのようなことを行ったおぼえがありません。あと、他に何か設定しておくライブラリってありますか?

その他の回答 (1)

回答No.2

 こんにちは。補足頂きました。  おお、書き忘れておりました。必要なライブラリをリンクしなければいけませんでした。  それぞれのAPIが収められたライブラリはMSDNの一番下「対応情報」に書かれているので一目瞭然です。  http://msdn.microsoft.com/ja-jp/library/cc410952.aspx  「何故リンクを追加するハメに陥ったか」と言う事ですが、WIN32プロジェクトを作成すると、「基本的なWIN32APIのリンクは行ってくれる設定にしてくれる」からではないでしょうか。  CLRの方はWIN32を使用する事が前提に無いので、「使用する場合は任意で」と言った解釈で良いと思います。  要は本来必要な設定をプロジェクトの種類に応じてVCが自動で行ってくれると言う事なのでは。  例えば当方が使用しているVC2005Expressは、WIN32プロジェクト自体が作成出来ないので、作成出来る様にする為に設定を行いました。  更にWIN32プロジェクトを作成するにも、必要となるリンクは全て自分で行う必要があります。  製品版ではないので其処までしてくれませんでした。他社のコンパイラを使用するともなれば、フォルダの構成から何から、1から全てを書く必要があります。  この辺りは「環境」による違いに左右される事ですので、チョッと一言では説明出来ません・・・。  で、肝心な「この先何が必要になるか」と言う事ですが  kernel32.lib  user32.lib  gdi32.lib  winspool.lib  comdlg32.lib  advapi32.lib  shell32.lib  ole32.lib  oleaut32.lib  uuid.lib  winmm.lib  辺り迄、リンクしてあれば後先楽にはなりそうです。

yozakura20
質問者

お礼

丁寧な回答ありがとうございます。やはりCLRの開発では基本的にAPIは使わないのですね、となるとまたいろいろ覚えなければならないのか。。。 でもAPIも問題なく使えるようになったので安心です。 とりあえずライブラリの設定はしておきます。 ありがとうございました。

関連するQ&A

専門家に質問してみよう