• ベストアンサー

カウントアップタイマ

Visual Studio 2005 の C++ で、カウントアップするタイマを作りたいと考えています。 今のところ、サンプルプログラムを参考に現在時刻を表示するものはできました。 これを応用して、0からカウントアップさせるプログラムを作ろうと思ったのですがなかなかできません。 初心者でなかなかイメージがわかず、単純にfor文で1個ずつ数を増やして表示させようと試みたのですが失敗に終わりました。 Windowsアプリケーションでは単純にいかないものですね。悩 何かヒントのようなもので結構ですので、力を貸していただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yamaj_biz
  • ベストアンサー率71% (10/14)
回答No.2

for文で回している為にほかのメッセージが処理出来ずに表示更新が出来ない…。 という状況の可能性もあるかと思うのですが。 とりあえずは、.Netかどうかによっても違いますのでその点を表明して頂けると回答が絞り込めると思います。 私の場合MFCメインなので、SetTimerを仕掛けてOnTimerで処理するのが基本ですね。(精度が悪いですが…) 高精度を求める場合はマルチメディアタイマとスレッドの併用ですね。

mymusic54
質問者

お礼

回答ありがとうございます。 はい、始めは単純にfor文で1づつ足していく作業をしていたために、 他の処理ができず表示されませんでした。 しかしローカル変数をうまく使い、1づつカウントされるタイマを 作成できました!ありがとうございます。

その他の回答 (1)

回答No.1

現在時間からの差で求めているのでしょうか? >単純にfor文で1個ずつ数を増やして表示させようと試みたのですが失敗に終わりました 抽象的な表現で、どう失敗したのかわからないのですが…。 VS2005ということで、.NETによる開発ですか? .NETでの開発なら、 kernel32.dllをインポートして、 QueryPerformanceCounter等を利用すれば、より正確な時間は求められるかと思いますが…。 >Windowsアプリケーションでは単純にいかないものですね。悩 あなたのスキルの問題かと思いますよ。 サンプルとして、C#による処理時間計測プログラムを転載しておきます。これを応用すれば問題ないでしょ。 public static class StopWatch { [DllImport("kernel32.dll")] extern static short QueryPerformanceCounter(ref long x); [DllImport("kernel32.dll")] extern static short QueryPerformanceFrequency(ref long x); private static double strt; public static double time; public static void Start() { long cnt = 0; long frq = 0; QueryPerformanceCounter(ref cnt); QueryPerformanceFrequency(ref frq); strt = (double)cnt / (double)frq; } public static void Stop() { long cnt = 0; long frq = 0; QueryPerformanceCounter(ref cnt); QueryPerformanceFrequency(ref frq); double c = (double)cnt / (double)frq; time = (c - strt) * 1000; } } Start()を呼び出して、Stop()を呼び出す。 StopWatchクラスのtimeを参照すれば時間が記録されています。

mymusic54
質問者

お礼

言葉不足で申し訳ありません。 ご丁寧にサンプルプログラムありがとうございます。 無事解決することができました。 ありがとうございました。

関連するQ&A

  • Visual Studio 更新プログラム

    一週間前にパソコンを買い替えセットアップしシャットダウン後に、MSより自動更新プログラムがインストールされました。 更新プログラムで、Visual Studio 2010 Tools for Office Runtime 更新プログラム3本の内 1本が失敗となり更新できませんでした。 しかし、このパソコンにはVisual Studioは入っていないのに、2本は更新、1本は失敗。 そこで質問なのですが、 Q1:なぜVisual Studioが入っていないのに更新されたのでしょうか。 Q2:これらVisual Studio更新プログラムを削除することはできないのでしょうか。 使用パソコンはNEC LaVie LS550TS OSはWindows8.1 MSはHome and Business Premium? ご教授をよろしくお願いします。

  • VB.NETによるTCP通信プログラムについて

    VB.NETによるTCP通信プログラムについて VB.NETによりTCP通信プログラムを開発しようと思っておりますが、TCP通信はクライアントとサーバーに機能が分かれると思いますが、一つのアプリケーションでサーバー機能とクライアント機能を有するアプリケーションは開発が可能でしょうか? サンプルプログラムを探しているのですが、どれも、クライアントとサーバーのどちらかの機能だけですが、両機能を持ち合わせたサンプルを掲載されているサイトをご存じの方は、お手数ですが、教えて頂けると助かります。 ご教授のほど、よろしくお願い致します。 Windows XP SP3 Visual Studio 2008 Visual Basic

  • Visual Studio .NET C# でDLLを作成し、VB.N

    Visual Studio .NET C# でDLLを作成し、VB.NETで呼び出す初心者向けのサンプルについて  現在、Visusal Studio .NET C#でDLLを作成して、それを、VisualBasic.NETのWindowsアプリケーションで呼び出す簡単なプログラムを作成したいと思っているのですが、書籍をあたってもなかなか参考になる書籍がみつけられなく、サンプルのサイト又は、自分でそのようなプログラムを作成している人にぜひご教授願いたく、質問させていただきました。当方、初心者ですので、何卒宜しくお願いいたします。

  • データベースアプリの作成

    Visual Studio Express 2013 for Webでデータベースアプリを作成しようとしており、そのメインとなる部分として、データをエクセルのように表形式で扱いたいのですが、なかなかうまくいきません。ネットにサンプルプログラムがありそうなものですが、見つかりません。部分的なサンプルを駆使して、現在LinqDataSourceとGridViewを用いて途中までは作成しています。 欲しい機能としては、 1.データ検証ありで、データの追加、更新 2.データの削除(確認ポップアップあり) 3.各データでフィルタリング表示(起動時は全データ表示。フィルタリングを外せば全データ表示できる) 4.データ読み込み後、他者が更新した1行(1レコード)を更新しようとしたら、その旨表示して更新しない。 5.エクセルファイルにエクスポートもできれば嬉しい。 何かよいサンプルプログラムはないでしょうか。

  • VBで帳票するサンプル

    Visual Studio Express 2012 for Windows DesktopでVBを使って帳票のプログラムを作ろうとしています。 サンプルソースがあればご紹介ください。 できれば、外部ツールを使わずに、追加費用が発生しない範疇で制作したいです。

  • mscomm32.ocxの登録方法

    現在、Visual Studioがインストールされていない環境のWindowsでアプリケーションを起動させるにあたり、次の点がクリアできません。 サンプルにあります、「CCommCtrl」クラスを利用したプログラムなのですが、Windows2000において、「regsvr32.exe mscomm32.ocx」で登録を行ったにもかかわらずエラーが発生してしまいます。 他に登録するものがあるのでしょうか? Visual Studioのインストール後のWindows2000では、問題なく起動します。 どなたか、良いアドバイスを御願いいたします。

  • .NET frameworkでOpenGLを使うサンプルをしりませんか?

    Visual Studio 2008で、.NET frameworkを使ってOpenGLを組む サンプルプログラムを探しています。 ご存知の方は教えてください

  • SQL Server Compactはどこへ!?

    ビジュアルスタジオで前に作ったSQL Server Compactを組み込んであるアプリケーションをバージョンアップしようとしたら、2013ではサポートから外されていました。 なぜ外されてしまったのでしょうか? ビジュアルスタジオでサポートされている代替機能にはなにがありますか?

  • スタートの全てのプログラムでVBとc++が少し違う

    ・Microsoft Visual Basic 2008 Express Edition ・Microsoft Visual C++ 2008 Express Edition の2つをインストールしました。 しかしスタートの全てのプログラムを見ると C++ の方はフォルダにはいっていて、 VBの方はそのまま(裸のまま)プログラム一覧に表示されています。 Visual C++ の方はフォルダの中身は ・Microsoft Visual C++ 2008 Express Editionのアプリケーションと ・Visual Studio Toolsフォルダです。 Visual Studio Toolsの中には Visual Studio 2008 コマンド プロンプト が入っています。 これは標準の配置ですか? もしかしたら私が知らぬ間にいじったのか気になります。 OSはvistaです。 よろしくお願いします。

  • MDIで同時起動するドキュメント数の制限方法

    次の開発環境でWindowsアプリを作成するにあたり、 アプリケーションの種類をMDIとします。  WindowsXP Professional  Visual Studio.NET 2002  VC++ MFC そこで、質問なのですがMDIで同時起動する ドキュメント数を制限する方法はありますか。 例えば、ウィンドウ内で開くドキュメント数を 4つまでに制限する。 .NET上での設定なのか、コード上で行うのか。 または、参照するサイトやサンプルプログラム、 書籍、ヒントとなる関数やコードなど、なんでも よろしいのでご存じなことを教えて頂けないで しょうか。