この記事は2020年07月13日に投稿しました。
目次
リンク
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. おわりに
前々回
前回
に続き、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