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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Ryser
記事: 10
登録日時: 5年前

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

#1

投稿記事 by Ryser » 5年前

[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フォーム

アバター
lriki
記事: 88
登録日時: 9年前

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

#2

投稿記事 by lriki » 5年前

こんな感じでしょうか。

コード:

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 をオススメします。

Ryser
記事: 10
登録日時: 5年前

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

#3

投稿記事 by Ryser » 5年前

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

閉鎖

“C言語何でも質問掲示板” へ戻る