ブログパーツ レンタルCGI
TAKAさんの毎日が発見・ブログ
アマチュア無線の機器製作を中心にした日常の活動記録です (by Taka JA2GRC、このブログはFC2_BLOGを使わせていただいてます。)
≪07月   2017年08月   09月≫
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  
C++フォームアプリ・続き
 昨日の続きです。 いよいよ、サンプルのC++ネイティブコードを、Windows フォームアプリケーション用に書き換えていきます。 しかしこれが、なかなか大変。 突っかかると、一行を書き換えるのに2~3日悩んでしまうことも。 やっと解決の糸口が見えたときは、ガスに覆われた山道で、急にガスが晴れたときのようなスッキリした気分になります。
 ちなみに、Visual Studio ではWindows フォームアプリケーションと言っていますが、一般的には、C++/CLIと言うみたいです。 この前進に、C++マネージ拡張というのが有ったみたいですが、Visual Studio 2005以降に付いているC++によるWindowsフォームアプリケーションというのは、すべてC++/CLIに対応しているみたいですので、C++マネージ拡張というのは知らなくても良いみたいです。 と言うか、私からしたら、違いが分からないので、どうでも良いのですが。 別に、マネージ(ド)とかアンマネージ(ド)とか言う場合もありますので、更にややこしいですが、現状の理解は、OSのメモり空間を直接使い、CPUが直接実行する形式を、ネイティブ=アンマネージ(ド)と言い、.NETなどのOSを覆う層が管理するメモリ空間を使い、仮想マシンが実行する形式を、マネージ(ド)と言うものみたいだぐらいに理解しています。 で、C++/CLI(Windowsフォームアプリケーション)というのは、そのマネージ(ド)形式のプログラムの中で、アンマネージ(ド)(=ネイティブ)コードを使えるように工夫したもので有るみたいです。

 ただ、この理屈が、おおよそ分かっていても、じゃあ、具体的にどうするのか? と言うところは、やってみないと、なかなか理解できません。 理屈だけじゃ、実際にコードをどう書くかというのは分かりませんからね。 しかも、分かり易い参考情報が非常に少ないです。 で、問題にぶち当たって、いろいろ調べても分からなくて、更に2~3日悩んで、やっと解決するという「牛歩」状態です。

 まずは、フォームに合わせて、処理を書き換えていきます。 includeファイルの配置なども、ちょっと違っていて、複数の事象が重なっていて、問題をより複雑にしています。

150917_cpp_form_05.jpg

 当然のごとく、書き換えただけではエラーが出ます。

150917_cpp_form_06.jpg

 「出たーっ!」 このエラーですね。 取っつきにくくしているのは。 さて、エラーは分かるのですが、具体的にどう書き換えたらよいのか? 糸口をつかむのに、あちこち調べまくりました。 いろいろコードも試してみました。

150917_cpp_form_07.jpg

 結局、アンマネージ空間で定義された変数を、マネージ空間で使うには、マーシャリングという手法で型変換をしなければならない様だと言うところまでは分かりました。

 これで、デバイスリストが上手く取り込めるようになりました。 うむ~っ、なかなかのものです。 この一行を書き換えるだけで、結構、はまりました。

150917_cpp_form_08.jpg

 フォームとフォームに貼り付けてあるコントロールは、マネージ型で構成されている。 それ以外のコードはアンマネージで構成されている様だと言うのが現状の理解なんですが。 まだ、スッキリ理解というわけではありません。 「とりあえず動いた」と言う状況です。

 調子が出たので、勢いに乗って、デバイス名の左側に番号を振って、更にデフォルト表示部分にもデバイス名を入れて見ました。

 これで、初期起動処理のデバイス一覧の取得と羅列に関しては体裁が整ったと思います。 しかし、まだまだ、先は長そうです。

150917_cpp_form_09.jpg
コメント
この記事へのコメント
URL :
コメント :
パスワード :
管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
Template designed by アクセラと+αな生活

Powered by まとめ .