プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

C++/CLIでタイマーを使用する(その3)

この記事は2020年07月13日に投稿しました。

f:id:paveway:20190914064630j:plain

目次

  1. はじめに
  2. C++/CLIでタイマーを使用する(その3)
  3. おわりに

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているC++/CLIでタイマーを使用する方法(その3)についてです。

目次へ

2. C++/CLIでタイマーを使用する(その3)

C++/CLIでタイマーを使用するには、System::Windows::Forms::Timerクラスを使用します。

実装例

MainForm.h
#pragma once

namespace CLIFormsTimer {

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

    public ref class MainForm : public System::Windows::Forms::Form
    {
        (...省略...)

    private:
        int count;
        Timer^ timer;

        private: System::Void MainForm_Load(System::Object^ sender, System::EventArgs^ e) {
            count = 0;

            // タイマーを生成します。
            timer = gcnew Timer();

            // 呼び出し間隔(ミリ秒)を設定します。
            timer->Interval = 1000;

            // 呼び出される処理を設定します。
            timer->Tick += gcnew EventHandler(this, &MainForm::Timer_Tick);
            
            // タイマーを開始します。
            timer->Start();
        }

        /**
        * @brief 指定時間経つと呼び出される処理
        *
        * @param [in] sender タイマー
        * @param [in] e イベント
        */
        void MainForm::Timer_Tick(Object^ sender, EventArgs^ e)
        {
            // カウンタが10より小さい場合
            if (count < 10)
            {
                // 動作した時間を表示します。
                DateTime^ now = DateTime::Now;
                String^ time = now->ToString("HH:mm:ss");
                Debug::WriteLine(time);
            }

            // カウンタが10以上の場合
            else
            {
                // タイマーを停止します。
                timer->Stop();
            }

            // カウンタを更新します。
            count++;
        }
    };
}
main.cpp
#include "MainForm.h"

using namespace System;
using namespace CLIFormsTimer;

[STAThreadAttribute]
int main()
{
    MainForm^ mainForm = gcnew MainForm();
    Application::Run(mainForm);
    return 0;
}

実行結果

13:06:48
13:06:49
13:06:50
13:06:51
13:06:52
13:06:53
13:06:54
13:06:55
13:06:56
13:06:57

API Reference

System::Windows::Forms::Timerクラス

目次へ

3. おわりに

前々回

www.paveway.info

前回

www.paveway.info

に続き、3つ目のタイマーの紹介です。
今回のSystem::Windows::Forms::Timerクラスの紹介です。
今回のタイマーは、Windowsフォーム専用のタイマーのようです。

紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。

目次へ


私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS [Bi-OS][Bi-OS]は高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。

また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。

EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688

目次へ