|
プロセスグラフ表示クラス |
| ダウンロード : ProcessGraph.zip (2006/03/26) |
CPU 使用率、通信占有率、メモリ使用量、etc。
プロセスの状態をグラフ化して表示したい事があります。
主にプロセス系のグラフ表示を行うクラスがここで紹介するプロセスグラフクラスです。
参考画像は MFC ダイアログに組み込んだ例ですが、本クラスは SDK での設計となっているため、
殆ど全ての開発系に対応できると思います。
デフォルトの設定は極力 WinXP のタスクマネージャに雰囲気を合わせてあります。
アナログ時計クラスと同様、色に関しては自由に変更が可能となっています。
今回は色情報は全て public としました。いつでも好きなときにメンバ変数を変更できます。
適当にいろ変更を行った後で、最後に InvalidateRect() すれば色が書き換わる仕様となっています。
基点(グラフ表示開始位置)は、デフォルトでタスクマネージャと同じ右下となっています。
これは上下左右の四隅の好きな場所に変更することが出来ます。
グラフの種類は折れ線グラフと棒グラフの2種類です。
下の画像は、適当に色を変えた後、基点を右上として棒グラフで表示させた例です。
特徴的なのがオフセット指定です。グリッドの表示開始位置をオフセットにより左右にずらすことが出来ます。
これにより WinXP のタスクマネージャとほぼ同等の表示が可能となっています。
グラフは 0.0f〜1.0f に正規化されたデータを格納した float 配列の先頭ポインタを、
その配列の有効数とともに指定してやれば基点を 0.0 としてグラフ表示します。
タスクマネージャと同じようにグラフをずらしたければ、配列の内容をずらせばよいということになります。
つまり、プロセスグラフクラス自体にグラフスクロール機能はありません。
あくまでも表示だけに特化した作りとなっています。
唯一、例外機能としてグラフをクリックしたときに、その高さが取得できるようにしてあります。
クリックを許可するときに通知先ウィンドウハンドルを設定します。
すると、左クリックしたときにその指定先に専用のユーザーメッセージを送出します。
ウィンドウハンドルを指定しないときは ::GetParent() で取得できた親ウィンドウにメッセージを送出します。
MFC/SDK ともに使用サンプルを付けましたので参考にしてください。
なお、本クラスの動作確認のためにアトリエぺっぺさんが公開されている CCpuUseRate クラスをほんの一部だけ改造して使用しています。
※ 著作権表示はアトリエぺっぺさん名で記入済みとなっています。
| 使い方 |