こうすけ さん プロフィール

  •  
こうすけさん: C++ に挑戦!
ハンドル名こうすけ さん
ブログタイトルC++ に挑戦!
ブログURLhttp://fanblogs.jp/cplusplus/
サイト紹介文C++を学びながら、理解したことを記述します。 自分と、さらに誰かの役に立つことを願いながら。
参加カテゴリー
更新頻度(1年)情報提供430回 / 316日(平均9.5回/週) - 参加 2017/08/29 10:18

こうすけ さんのブログ記事

  • 《その426》Contentプロパティ
  •  Contentプロパティ Button要素や Label要素など、Contentプロパティを持つ要素の場合、その Contentプロパティに任意の型の子要素を設定することができます。   <Button>     <Button.Content>       <TextBlock Text="あいうえお"/>     </Button.Content>   </Button> この例の場合であれば、<Button.Content&.. [続きを読む]
  • 《その425》MapControl
  •  MapControl MapControl は地図を表示します。 MapControl自体は、   表示(V) -> ツールボックス(X)から ドラッグ&ドロップで簡単に設置できるのですが、これを使えるようにするにはマップ認証キーを入手する必要があります。 マップ認証キーの入手方法の解説は ここ マップ認証キーの入手先は ここ です。 MapControl には たくさんの機能がありますが、今回は、ツールボックスからドラッグ&ドロップした基本状態のまま [続きを読む]
  • 《その424》ProgressRingコントロール
  •  ProgressRingコントロール ProgressRing等のプログレスコントロールは、時間のかかる作業が進行中であることを示します。下記の例では、標準色の水色を赤色に変えて、サイズを少し大きくしてあります。 ProgressRingの動作を開始させるコードは、   progressRing->IsActive = true;動作終了は、   progressRing->IsActive = false;です。 コントロールの配置状況です。(左から Progre.. [続きを読む]
  • 《その423》FlipView を利用した画像表示
  •  FlipViewコントロールを利用した画像表示  今回のアプリの開始画面です。  見たい画像にチェックを入れます(最初の画像が表示されます)。  右矢印を して次の画像に移りました。  3枚目の画像です。  画像01 にもチェックを入れました。 アプリの動作は以上のような感じです。 FlipView は、次のような XAMLコードだけで、完全な動作をするものが生成されますから、手軽に利用することができます。   & [続きを読む]
  • 《その422》CalendarDatePicker コントロール
  •  CalendarDatePicker による日付入力 ユーザーに日付入力をしてもらう必要がある場合、CalendarDatePickerコントロールを利用できると便利です。CalendarDatePickerコントロールの配置は、ツールボックスからフォーム上にドラッグ&ドロップするだけなので容易です。  今回の主要テーマは、CalendarDatePickerコントロールで、ユーザーが選んだ日付を取得する方法です。下記の MainPage.xaml.cpp で、日付の.. [続きを読む]
  • 《その421》XAML(Grid の詳細設定)
  •  XAML(Grid の詳細設定) Grid の詳細設定"auto" の指定 コンテンツのサイズに合わせて列の幅を自動調整します。   <ColumnDefinition Width="auto"/> コンテンツのサイズに合わせて行の高さを自動調整します。   <RowDefinition Height="auto"/>"MaxWidth", "MaxHeight" の指定 幅・高さ の上限値を設定します(上限までは自動調整)。   <ColumnDefi.. [続きを読む]
  • 《その420》XAML(Grid)
  •  XAML(Grid) Gridコントロールは、格子状の枠内に子要素を配置することができます。  次の指定で、2行3列の Grid枠が生成され、それぞれの枠内にコントロールを配置することができます。  <Grid VerticalAlignment="Top" HorizontalAlignment="Left"    Width="600" Height="400" Margin="20,10">    <Grid.ColumnDefinitions>   .. [続きを読む]
  • 《その419》XAML(図形の描画)
  •  XAML(図形の描画) C++/CXコードで図形を描画する方法については、本ブログ《380》〜《382》で扱いましたが、今回は、XAML を用いた描画です。 以下は、MainPage.xaml のコードです。<Page x:Class="App14.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.mic.. [続きを読む]
  • 《その417》XAML(Imageタグ)
  • XAML(Imageタグ) コードの文字数は多いですが、VS2017 は XAMLコードを自動生成してくれるので助かります。◆ ソリューションエクスプローラー -> App##(Universal Windows)  Assets を右 ◆ 追加(D) -> 既存の項目(G)◆ 取り込む画像ファイルを選択◆ 表示(V) -> ツールボックス(X)  Imageコントロールをフォーム上にドラッグ&ドロップ◆ 自動生成された Imageタグを編集します。   .. [続きを読む]
  • 《その416》XAML(TextBoxタグ)
  • XAML(TextBoxタグ) 本ブログの《364》〜《399》では、XAMLコードを 全て VS2017 に自動作成してもらいました。このまま XAML の知識ゼロで先に進むのは ちょっと不安なので、基礎の基礎くらいは知っておきたいと思います。XAML を使える人には、申しわけありません m(_ _)m 以下が、今回の手順です。◆ ファイル(F) -> 新規作成(N) -> プロジェクト(P)◆ Visual C++ -> Windowsユニバーサル -> .. [続きを読む]
  • 《その415》Platform::Array
  •  Platform::Array Windows Runtime が提供する Platform::Array は、1次元配列を扱う参照型クラスです。 C++/CX においても、Platform::Array よりずっと使いやすい std::array(あるいは、より強力な std::vector)を使うべきですが、ABI を介して配列の受け渡しをする場合にはPlatform::Array型を使う必要があります。※ABI : Application Binary Interfa.. [続きを読む]
  • 《その414》ガベージコレクション
  •  ガベージコレクション   std::wstring* p     = new std::wstring(L"あいうえお");で作成した文字列インスタンスを格納するメモリ領域は、明示的に   delete p;として解放しない限り、メモリを占有し続けます。   for (int i = 0; i < 5000; i++)     for (int j = 0; j < 5000; j++)       std::wstring* p = new std::wstr.. [続きを読む]
  • 《その412》C++/CX のクラス
  • C++/CX のクラス● C++/CX のクラスは、refクラスと呼ばれる参照型です。● クラスオブジェクトのインスタンスはメモリのヒープ領域に置かれ、そのインスタンスを表す変数がインスタンスを参照します。 refクラスは例えば次のようにして作成します。   public ref class C_name sealed {     ・・・・・・   }; ※先頭の public はアクセス修飾子です。   Windows ランタイムの型は名前空間内で宣言されますが、p [続きを読む]
  • 《その411》int main(Array<String^>^ args)
  •  int main(Array<String^>^ args) 前回《410》のプログラムの main関数は   int main(Platform::Array<Platform::String^>^ args) {     ・・・・・・   }のようになっていました。 その理由ですが、   int main() {     ・・・・・・   }として実行すると、 「warning C4447: スレッド モデルのない 'main' シグネチャが見つかりまし.. [続きを読む]
  • 《その410》C++/CX
  •  C++/CX 本ブログの《364》〜《399》は、UWP(Universal Windows Platform)ベースの UWPアプリについての内容でした。その際の使用言語は C++/CX です。作成した UWPアプリは、基礎的なものばかりですが、 ・時計の作成 ・画像の移動 ・ポインタ位置・マウスの動作・ウィンドウサイズ 等の取得と その利用 ・画像ファイルやテキストファイルの読み込み ・テキストファイルの編集と保存等を実現するものでした。  UWPアプ [続きを読む]
  • 《その409》タスク の実行
  • タスク の実行 下記のプログラムにおいて、タスク t1 は a の値を4乗した値を返します。   auto t1 = task<int>([&a]() {     return a = a * a * a * a ;   }); しかし、定義した直後の   cout << a << 'n';では、4乗された値ではなく、最初の a の値が表示されます。このことから、t1 は、生成されただけで実行はされていないことがわかります。 次の、   t.. [続きを読む]
  • 《その407》タスクの起動・タスクの返却値
  •  タスクの起動・タスクの返却値【タスクの起動】 create_task関数を使ってタスク task1 を生成します。   auto task1 = create_task([] { cout << 1000 << 'n'; }); タスク task1 は、、   task1.then([]{ });あるいは   task1.wait();などのコードで起動します。【タスクの返却値】 ラムダ式が値を返却するように変更してみます。   auto task1 = .. [続きを読む]
  • 《その406》create_task関数
  •  create_task関数 create_task関数は、PPL_taskオブジェクトを作成します(PPL : Parallel Pattern Library)。 そして、この非同期処理の完了時に、task::then関数を用いて継続処理を行わせることができます。 プログラムでは、   auto task_start = create_task( ・・・・・・ );として、最初の task を 開始しています。次いで、   auto task_continuation_1.. [続きを読む]
  • 《その405》async関数
  •  async std::async は、   ・・・・・・   std::future<戻り値の型> val = async(std::launch::async,     [ ] { 戻り値を返す処理 }   );   ・・・・・・   別の処理を実行   ・・・・・・   std::cout << val.get();の形で使います。・std::async は、ポリシー std::launch::async の指定を受けて、関数を別スレッドで実行します。・.. [続きを読む]
  • 《その404》ラムダ式の参照キャプチャ
  •  ラムダ式の参照キャプチャ キャプチャリストの変数を参照にすることで、ラムダ式の中から外部の変数にアクセスできるようになります。 下記のプログラムのラムダ式は、    [&a, n, d] { ・・・・・・ }となっていますから、ラムダ式の中から、外部の変数 a を操作できます。     スレッドによる並行処理 スレッドによる並行処理の様子を実感したいと思い、単純すぎるとは思いますが、下記のようなプログラムを作りま [続きを読む]
  • 《その403》thread の引数としての 関数およびラムダ式
  •  thread の引数としての 関数およびラムダ式 下記のプログラムにおいて、★1. スレッド th1 の受け取る引数は func, a, n の3つです。   この場合、func が関数なので、 func, a, n の並びは func(a, n) と同じ効果をもちます。★2. スレッド th2 の受け取る引数は ラムダ式です。   キャプチャリスト [ ]内に b, n を指定しています。   ※外部の変数 b, n のコピーが作られ、ラムダ式の内部で使えるようになります.. [続きを読む]
  • 《その402》マルチスレッド と mutexクラス
  •  マルチスレッド と mutexクラス 例えば、スレッド th1 での cout による画面出力のコードを比較してみると、 前回《401》のプログラムでは、   cout << "th1 ・・・" + to_string(i + 1) + "回目n";となっていますから、一つにまとめられた文字列を一気に出力しています。 一方、今回は、、   cout << "th1 ・・・" << i + 1 << "回目n";と、"th1 ・.. [続きを読む]