Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
C++RAD Studio

座学のC++からモダンなC++へステップアップするための15のヒント (パート2)

digital-particles

この記事は、Yılmaz Yörü氏のhttps://blogs.embarcadero.com/15-tips-to-graduate-from-classroom-c-to-modern-c-part-2-3/の抄訳です

(6)モダンなGUIフォームを使用

IDE(Visual C++、C++ Builder、Objective-C、Android Studioなど)を備えた最新のC++コンパイラは、コンパイルされたアプリケーションのオペレーティングシステムの動作によってグラフィカルインターフェースを使用します。コンソールベースのアプリケーションは優れていますが、場合によっては、さらに機能を追加する必要があります。 UI要素を使用すると、アプリケーションを簡単に使用し、ユーザー側で物事を理解できます。、ユーザー側で物事を理解できるようにします。

また、これらのUI要素、グラフィック、画像により、アプリケーションは視覚的に魅力的なものになります。

Visual C++には、以前のバージョンのVisual C++向けのSkinFrameworkやSkinCrafterのように、UI要素のスキン/スタイルをサポートするサードパーティアプリケーションがあります。

Visual C ++ MFCのSkin Frameworkは、Windowsテーマ(ビジュアルスタイル)を念頭に置いて開発されたスキニングユーザーインターフェイスフレームワークを提供します。 テーマの持つアプリケーションを、わずか数行のコードで作成できます。

15-tips-tour_first

SkinCrafterは、古いVisual C ++アプリケーション(2012年以前)のもう1つの選択肢です。アプリケーションスキニングは、SkinCrafterでは多くのプログラミング言語、ツール、フレームワークに対応しています。ただし、最新のVisual C ++バージョンはサポートしていません。

222

RAD StudioとC++Builderでは、VCLアプリケーションとFMXアプリケーションの両方で、非常に多様なスタイルを提供しています。また実行時にアプリケーションのスタイルを変更することも可能です。これらのスタイルは、マルチプラットフォームのアプリケーションに使用することができ、RAD Studioが提供しているビットマップスタイルデザイナを使用してカスタマイズすることもできます。

また、最初から新しいスタイルを作成することもできます。全く新しいスタイルを始めるには、ビットマップスタイルデザイナのVCLスタイルテンプレートを手本にしてカスタマイズする方法が最も簡単です。VCLスタイルはWindowsテーマエンジンをサポートしており、クロスプラットフォームのFireMonkeyUIフレームワークのFMXスタイルは他のオペレーティングシステムと互換性があります。ウィンドウとUI要素のスキンに加えて、スタイルには多くのモダンなアイコンも用意されています。ほとんどのVCLおよびFMXスタイルは無料で、GetItもしくは他のオンラインWebページから新しい無料版のスタイルをダウンロードすることもできます。

333

Tip 6: GUIベースのアプリケーションを開発して、魅力的なグラフィックを備えた簡単でわかりやすいアプリを作成する

(7)ビジュアルプログラミングでの文字出力は、UIコンポーネントのプロパティあるいはメソッドを使用する

C++では、std::coutを使ってコンソールに書き込むことが多いのですが、このオブジェクトはストリームで使用されるため、<<演算子をサポートしています。矢印の方向が出力を示し、この演算子の右側にあるものはすべて出力として表示されます。以下は、その例です。

#include <iostream>
 
int main()
{
   std::cout << "This is in chars";
   return 0
}

最新のC ++では、coutを使用しないでください。バックエンドアプリケーションや他のOSアプリケーションでは、文字列のケースと同様、文字出力も多言語に対応することも考慮し、std::wcoutを使用してください。以下はUnicodeで文字出力を行う例です。

#include <iostream>
 
int main()
{
   std::wcout << L"This is in wide chars";
   return 0
}

一般的に、モダンなC++ではすべての文字列処理はUnicode文字列またはワイド文字列が使用され、UIアプリではstd::coutやstd::wcoutを使うことはありません。モダンなアプリケーションでは、ボタン、エディットボックス、テキストボックス、ドロップダウンコンボボックス、メニューなどのGUIに対応しており、モダンなC++開発IDE(C++ Builder、Visual C++など)もUnicode文字列をサポートしているため、coutを使わずに、任意のコンポーネントのプロパティを出力として使用します。

以下は、C++BuilderでLabelコンポーネントのtextプロパティに名前と年齢を出力する例です。

 String name = L"John";
 int age = 25;
 
 Label1->Text = name;
 Label2->Text = IntToStr(age);

以下のC++Builderのprint()関数の例では、Unicode文字列をMemoコンポーネントのラインに出力しています。

void print(String txt)
{
   Form1->Memo1->Lines->Add(txt);
   return 0;
}

Tip 7: ビジュアルプログラミングでの文字出力は、UIコンポーネントのプロパティあるいはメソッドを使用する

(8) ビジュアルプログラミングでの文字入力は、UIコンポーネントのプロパティあるいはメソッドを使用する

C++のコンソールアプリケーションでは、std :: cinオブジェクトは>>演算子とともに使用されます。 矢印の方向は入力を示し、この演算子の右側にあるものはすべて出力として表示されます。以下は、その例です。

#include <iostream>
 
int main() 
{
   std::string name;
 
   std::cout << "Name please:";
   std::cin >> name;
 
   return 0;
}

上記のように、ビジュアルプログラミングでは、テキスト、テキストボックス、ボタン、ラベル、ドロップダウンラベルなどを追加し、それらをUI要素、コンポーネント、またはビジュアルツールと呼びます。

モダンC++では、これらの要素のプロパティを入力として使用したり、そのメソッドを使って入力を取得したりします。例えば、C++BuilderのEdit(テキスト入力)コンポーネントのtextプロパティから、以下のように名前と年齢の入力を取得できます。

String name = Edit1->Text;
int age = StrToInt(Edit2->Text);

Tip 8: ビジュアルプログラミングでの文字の入力は、UIコンポーネントのプロパティあるいはメソッドを使用する

(9)標準ライブラリのメソッドや機能を利用する

C++の多くのライブラリは、様々なアプリケーションのための機能を提供していますが、一方で、すべてのC++アプリケーションで利用できる標準ライブラリがあります。STL(Standard Template Library、すべてのC++ディストリビューションに含まれている)は、GNU C++ Standard Library(libstdc++)、Microsoft C++ Standard Library(STL)、LLVM C++ Standard Library(libc++)など、ベンダによって実装が異なります。

STLでは、std:: 名前空間でメソッドや型などを定義しています。STLに含まれる機能についてはこちらをご覧ください。またSTLのアルゴリズムのほとんどを紹介した素晴らしいビデオはこちらにあります。その他の例としては、ヒープ、順列、数値アルゴリズム、問い合わせ、検索、配列要素を一定値で埋める(fill)、コピー、移動、削除、メモリ内のユニークな操作、変換アルゴリズムなどがあります。

#include <stdio.h>
#include <vector>
#include <algorithm>
 
int main()
{
  std::vector<int> vec{ 36, 11, 9, 5, 15, 45, 5, 3 , 98, 23, 65};
 
  for (auto i: vec)   std::cout << i << ',';   std::cout << 'n';
 
  std::sort(std::execution::par, vec.begin(), vec.end());
  for (auto i: vec)   std::cout << i << ',';   std::cout << 'n';
 
  getchar(); return 0;
}


Boost Libraryは、より多くのアルゴリズムを使用するためのもう1つの優れたライブラリです。Boostは、C++標準ライブラリと相性の良い、評価の高いポータブルなC++ソースライブラリを無償で提供しています。Boostのライブラリは、幅広い用途のアプリケーションで利用することを目的としています。Boostライセンスは、商用および非商用の両方の使用を奨励しています。

Tip 9: C++標準ライブラリの最適化されたメソッドや機能を可能な限り使用する

関連情報

RAD Studio 13.2 Florence Now Available! Kai 1.1.1 Now Available! What's Coming in RAD Studio 13.2 Florence

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.

Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

IN THE ARTICLES