VC++/CRLで関数でラベルの文字を変える方法

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

VC++/CRLで関数でラベルの文字を変える方法

#1

投稿記事 by Ryser » 9年前

こんばんは。C++を初め1ヶ月半程度の者です。ボタン(button1)クリック時に関数を使い
windowsフォームのlabel1の文字を、テキストボックスに入力した文字に変更
するだけの簡単なアプリを作成したいのですがどのようなコードを書けば宜しいのでしょうか?
http://urx.nu/j67Pにある方法を試してみたのですがこれも出来ずに困っています
回答を宜しくお願いします。
環境:OS Win8.1,VisualStudioExpress 2013,
Main.h(メインフォーム)

コード:

#pragma once

namespace texttest {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	/// <summary>
	/// Main の概要
	/// </summary>
	public ref class Main : public System::Windows::Forms::Form
	{
	public:
		Main(void)
		{
			InitializeComponent();
			//
			//TODO: ここにコンストラクター コードを追加します
			//
		}

	protected:
		/// <summary>
		/// 使用中のリソースをすべてクリーンアップします。
		/// </summary>
		~Main()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::Label^  label1;
	protected:
	private: System::Windows::Forms::Button^  button1;
	private: System::Windows::Forms::TextBox^  textBox1;

	private:
		/// <summary>
		/// 必要なデザイナー変数です。
		/// </summary>
		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
		/// <summary>
		/// デザイナー サポートに必要なメソッドです。このメソッドの内容を
		/// コード エディターで変更しないでください。
		/// </summary>
		void InitializeComponent(void)
		{
			this->label1 = (gcnew System::Windows::Forms::Label());
			this->button1 = (gcnew System::Windows::Forms::Button());
			this->textBox1 = (gcnew System::Windows::Forms::TextBox());
			this->SuspendLayout();
			// 
			// label1
			// 
			this->label1->AutoSize = true;
			this->label1->Font = (gcnew System::Drawing::Font(L"Meiryo UI", 13));
			this->label1->Location = System::Drawing::Point(99, 27);
			this->label1->Name = L"label1";
			this->label1->Size = System::Drawing::Size(57, 23);
			this->label1->TabIndex = 0;
			this->label1->Text = L"Text1";
			// 
			// button1
			// 
			this->button1->Location = System::Drawing::Point(12, 126);
			this->button1->Name = L"button1";
			this->button1->Size = System::Drawing::Size(223, 23);
			this->button1->TabIndex = 1;
			this->button1->Text = L"ラベル変更";
			this->button1->UseVisualStyleBackColor = true;
			this->button1->Click += gcnew System::EventHandler(this, &Main::button1_Click);
			// 
			// textBox1
			// 
			this->textBox1->Location = System::Drawing::Point(12, 63);
			this->textBox1->Name = L"textBox1";
			this->textBox1->Size = System::Drawing::Size(223, 19);
			this->textBox1->TabIndex = 2;
			// 
			// Main
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 12);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(243, 174);
			this->Controls->Add(this->textBox1);
			this->Controls->Add(this->button1);
			this->Controls->Add(this->label1);
			this->Name = L"Main";
			this->Text = L"Main";
			this->ResumeLayout(false);
			this->PerformLayout();

		}
#pragma endregion
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
		this->label1->Text = this->textBox1->Text;
	}
	};
}
Main.cpp

コード:

#include "Main.h"
using namespace texttest;
[STAThreadAttribute]
int main(array<System::String^>^ args){
	Application::EnableVisualStyles();
	Application::SetCompatibleTextRenderingDefault(false);
	Application::Run(gcnew Main());
}
最後に編集したユーザー Ryser on 2015年5月23日(土) 22:45 [ 編集 1 回目 ]

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: VC++/CRLで関数でラベルの文字を変える方法

#2

投稿記事 by softya(ソフト屋) » 9年前

ちゃぶ台返しですいません。
C++ CLRフォームというと超上級者向けのC++/CLI言語ですが大丈夫ですか? 初心者が使うのはお勧めできませんが。
検索しても情報が出てこなくて困るはず。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: VC++/CRLで関数でラベルの文字を変える方法

#3

投稿記事 by Ryser » 9年前

CLI言語はそんなに難しい物なのでしょうか?自分は本等を見ながら
とりあえずでこれまでやって来たのでC++の種類?等全く分かりません...
せっかくここまで続けて来たのですからCLI言語で続けていこうと考えております。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: VC++/CRLで関数でラベルの文字を変える方法

#4

投稿記事 by softya(ソフト屋) » 9年前

Ryser さんが書きました:CLI言語はそんなに難しい物なのでしょうか?自分は本等を見ながら
とりあえずでこれまでやって来たのでC++の種類?等全く分かりません...
せっかくここまで続けて来たのですからCLI言語で続けていこうと考えております。
問題は幾つかあります。
1.C++を拡張したC++/CLIは超難易度の言語であること。

2.今後、マイクロソフトがC++/CLIをメインでフューチャする可能性がないこと。
VisualStudio2012からCLRフォームが初期作成のテンプレートから外されたのは、その表れです。
つまり、仕事としても利用される可能性が著しく減少しています。2012以降は書籍も出てませんよね。
ちなみに、Windows8から追加されたモダンUIにはC++/CXとWinRTを利用します。C++/CLIとCLRフォームの出番はありません。
かろうじて、C++/CLIとC++/CXは文法が似てますが.NETであるCLRフォームに関しては一切使いません。

3.C++/CLIのCLRフォームは利用者が少ないため、質問や検索で困難が伴うこと。
【補足】この掲示板でも、まともに回答できるのは1人から2人ぐらいだと思います。
その人が現れるまで待っていただくことが多くなるかと思います。
私もVC++/MFCの人なので使っておりません。

以上が理由です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: VC++/CRLで関数でラベルの文字を変える方法

#5

投稿記事 by softya(ソフト屋) » 9年前

ちなみにマイクロソフトの開発チームが次のように言っています。

「VS2012のVC++でのwindowsフォームアプリケーションの作り方」
https://social.msdn.microsoft.com/Forum ... cgeneralja

引用です。
C++/CLI is a great solution for interop, but we do not recommend creating brand new UI applications using C++/CLI.
C ++ / CLIは、相互運用のための最適なソリューションですが、私たちは、C ++/ CLIを使用して、ブランドの新しいUIアプリケーションを作成することはお勧めしません。

【さらに補足】
1ヶ月半程度ほど勉強されているとのこと。
言語やフレームワークの学習は5年10年と続くものです。
2015では使えるようですが、UIデザイナのC++/CLI版が今後無くなる恐れもあります。
未確認ですが、C++/CLIはC++11の規格が適用されないまま来てる様ですのでC++本家と乖離しつつあるようの思います。
と言うことで、まだ始めたばかりと言えますのでC#なども検討されたほうが私は良いと思います。C++/CLIの経験は無駄にはなりません。
突き進むのも、それはそれは構いません。いろんなことを考慮して決めて頂ければと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: VC++/CRLで関数でラベルの文字を変える方法

#6

投稿記事 by Ryser » 9年前

返信が遅れて申し訳ございません。
C++/CLI言語はあまり使われない、サポートされなくなるかもしれない
と言った解釈で宜しいのでしょうか。確かに、C++/CLIの情報は
探してもあまり見つかりませんね...もし、これからC++/CLIで行き詰まり、
何をしても解決出来ないようなのであれば、MFC等の他の言語?
をやってみようと思います。様々な事を詳しく説明して頂き有難うございました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: VC++/CRLで関数でラベルの文字を変える方法

#7

投稿記事 by softya(ソフト屋) » 9年前

Ryser さんが書きました:返信が遅れて申し訳ございません。
C++/CLI言語はあまり使われない、サポートされなくなるかもしれない
と言った解釈で宜しいのでしょうか。確かに、C++/CLIの情報は
探してもあまり見つかりませんね...もし、これからC++/CLIで行き詰まり、
何をしても解決出来ないようなのであれば、MFC等の他の言語?
をやってみようと思います。様々な事を詳しく説明して頂き有難うございました。
MFC(Microsoft Foundation Class)はC++のマイクロソフトの開発した主にGUI=Windowアプリ用のフレームワークです。これもレガシー扱いですね。
.NETよりも古いので昔からのC++Windowアプリにはだいたい使われています。歴史的には20年超えです。
前は有料VisualStudioしか出来ませんでしたが、Visual Studio Community 2013で無料で使えるようになりました。
まぁ、GUIをC++/CLIで組むのと同じぐらい使わないほうが良い気がしますが、マイクロソフトがはっきり明言しないのでこのまま残る可能性もあるんですよね。
で代替ですが、はっきり言ってマイクロソフトは用意してません!
C++で従来のデスクトップのGUIは新規に組んでほしくないようです。

C++/CLI言語は今後も使われると思います。ただし、上級者がGUIを組む以外のC++とC#などとの橋渡しとしての用途にです。
C++/CLI言語であることとCLRフォーム(.NETフレームワーク)でGUIを組むことはイコールではありませんので。

CLRフォームをご自分で使われる分には何も問題は無いと思います。
ただ共同作業や、今後に残す学校で使われるツール、就活作品などという方向では避けられたほうが良いと私は思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: VC++/CRLで関数でラベルの文字を変える方法

#8

投稿記事 by Ryser » 9年前

また返信が遅れてしまい申し訳ございません。
CLRフォームでのアプリケーション作成は避けた方のが宜しいのでしょうか?
CLRフォームで6ヶ月程かけて多機能エディタを作成し、バグなど全て
修正した後に配布しようと考えているのですが、やはり他の物に
変えた方が良いのでしょうか?
質問ばかりで申し訳ございません。

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

Re: VC++/CRLで関数でラベルの文字を変える方法

#9

投稿記事 by Ryser » 9年前

遅れましたが、解決致しました

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: VC++/CRLで関数でラベルの文字を変える方法

#10

投稿記事 by softya(ソフト屋) » 9年前

C++/CLIのCLRフォームはVisualStudio2012以降マイクロソフトのGUI作成として非推奨である事は間違いありません。
何年先までサポートされるか分かりませんが、やがては消える可能性がありますしバージョンアップも途絶えているようですので何年も公開するアプリケーションに採用するのはリスクが大きいと言えます。後々別フレームワークに移そうと思ってもC++/CLIですのでC++純正よりも移植が困難です。

それとC++/CLI自体がC++の開発・勉強用の環境としてはふさわしくはありません。C++11/14の規格もサポートされていないのはC++の勉強用としても困ります。
私は変えたほうが良いと思いますが、決定打が無いので悩ましいですね。
今後はMFCが良いとはとても言えないし、Qt(キュート)もライセンスがややこしい上にメジャーとも言い切れない。
http://eyeballonly.com/blog/2014/04/02/ ... k-license/
C++でGUIを作る場合は、マイクロソフトに切り捨てられる覚悟で使うか、それが嫌ならオープンソース系を選ばざる負えないのです。
他にもGTK+やwxWidgetsなどがあります。

【補足】
なので、今後のWindowsアプリ作成言語の主役はC#です。C#のCLRフォームを使うのがマイクロソフトの推奨GUI構築方法です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

YuO
記事: 947
登録日時: 13年前
住所: 東京都世田谷区

Re: VC++/CRLで関数でラベルの文字を変える方法

#11

投稿記事 by YuO » 9年前

softya(ソフト屋) さんが書きました:なので、今後のWindowsアプリ作成言語の主役はC#です。C#のCLRフォームを使うのがマイクロソフトの推奨GUI構築方法です。
WinFormsよりもXAML系技術,つまりはWindows Store AppsやWPFがMS推奨かと。
実際,WinFormsはほとんど機能が追加されていないことがわかります
現実的にもWinFormsはXAML系よりもバインド技術が弱くて使いにくいことも多いですし。

閉鎖

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