Blogブログ

2007-8-1 ITのお話

Managed C++

先日より、VC++ .net 開発をしています。

Windows 開発は複雑に入り組みすぎていて私はかなり苦手です。WinProc が直接見える、CUI アプリ開発などは大丈夫なのですが、MFC で OnXxxx を制御しだすともう、よく分かりません。そもそもデバイスコンテキストはどうやって取得するの?とかを考え始めるとくらくらします。

Pure C で構造化させることが得意な私にとって、グローバル変数は出来るだけ利用を回避したいのに、デバイスコンテキストはデフォルトでグローバルですからね。

そうはいっても、.net で CLI の概念を導入してから windows 開発はめっきり分かりやすくなったと言う声は聞いていました。「その場合、C++ .net よりも、C# を使え!」という助言も聞いていたのですが、これまでの経験から思わず VC++ .net で開発しています。

すると。
ボックス化の利用で大きく躓いていしまいました。

とりあえず回避方法は分かったので暫定回避で実装していますが、基本的な概念が分かっていません。数値やリテラルをボックス化するにはどうすればよいのでしょうか?VC++.net は。Collection の Queue クラスで Drawing の Point を管理しようとしたのですが、どうしてもボックス化で躓いてしまいうまく行きませんでした。Form1 クラスの内部には Point の配列がもてないし(Point が構造体でボックス化できないから)、スタック変数に積もうとすると、Queue クラスに入れられません(Queue クラスに格納できるのはボックス化した情報だけ)。

Point[] は Graphics::DrawLines で利用しようとしていたので、現在は数値を配列に直接格納して DrawLine で描画して回避しています。本来の使い方、分かる方教えてください。

やりたいことは
 ・Graphics::DrawLines

で線を描きたいです。