ページ 11

VC++単色で塗りつぶしただけのコントロール(?)の配置について

Posted: 2015年5月23日(土) 22:39
by Ryser
[anchor= goto=http://www.wisdomsoft.jp/81.html]ここ[/anchor]のサイトでおそらくC#のただ単に塗りつぶしただけのコントロール(?)を配置するコードがあったのですがこれはVC++/CLIでも出来るのでしょうか?
コードの一部を変えてエラーは3つまでに減らせたのですがこれからどうしたら良いのかさっぱり分かりません。
どなたか私にご教授宜しくお願い致します。

コード:

	
		Control control = gcnew Control();
		control.Bounds = gcnew Rectangle(150, 200, 100, 50);
		control.BackColor = Color::Red;
		control.Anchor = AnchorStyles::Right | AnchorStyles::Bottom;
		Form form = gcnew Form();
環境
Visual Studio Express 2013
コンパイラ VSExpressのもの
言語VC++/CLI CLRフォーム

Re: VC++単色で塗りつぶしただけのコントロール(?)の配置について

Posted: 2015年5月24日(日) 22:43
by lriki
こんな感じでしょうか。

コード:

using namespace System;
using namespace System::Windows::Forms;
using namespace System::Drawing;

int main()
{
	Control^ control = gcnew Control();
	control->Bounds = Rectangle(150, 200, 100, 50);
	control->BackColor = Color::Red;
	control->Anchor = AnchorStyles::Right | AnchorStyles::Bottom;

	Form^ form = gcnew Form();
	form->Controls->Add(control);

	Application::Run(form);
	return 0;
}
・マネージクラスの参照は ^ (ハット) を付けます。
・メンバアクセスは -> (アロー演算子) を使います。
・Rectangle は構造体なので gcnew は必要ありません。

ちなみに、C# でできることは (クラスライブラリを使用する機能なら) C++/CLI でも基本的にできます。
ネットにある Form 系の C# コードは今回のような点に気を付ければほとんど読み替えられるはずです。
一方できないことは言語仕様に依存する処理ですね。C# は async、await という非同期処理を強力にサポートする機能がありますが、C++/CLI では使えなかったはずです。

なお、C++/CLI はネイティブ C++ コードと共存可能というメリットはあるものの、そのせいで非常に複雑です。
これからアプリ開発を計画されているのであれば、何か特別な理由がなければ C# か VB をオススメします。

Re: VC++単色で塗りつぶしただけのコントロール(?)の配置について

Posted: 2015年6月01日(月) 18:19
by Ryser
返信が遅れてしまい申し訳ございませんでした。
わざわざコードまで添付して頂いて本当にありがとうございますm(_ _)m
メンバへのアクセスに->を使う事についてはすっかり見落としていました。
もう少し粘るべきでした。
この度はありがとございましたm(_ _)m