• ベストアンサー

ダイアログベースのexeで最適なグラフ表示方法

C++で外部I/Oを制御し、温度入力とヒーター等のON/OFFを行う制御ソフトを作成しました。 ボタン操作などが多い都合上ダイアログベースのexeにしたのですが、制御履歴をグラフィカルに表示したいと考えています。 現状はピクチャーコントロールに固定の倍率で描画する方法を考えていますが、スクロールバーを表示してスクロールが出来ればさらに便利になります。 良い方法をご存じの方いらっしゃいましたら教えて頂けないでしょうか。

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

  • ベストアンサー
  • clsdi99
  • ベストアンサー率63% (31/49)
回答No.3

CScrollViewのようなコントロールですか? グラフコントロールにスクロールバーがあると言う意味でしょうか? そうなると申し訳ないのですが、参考URLに沢山グラフコントロールがありますので、今回に適したものを選択してもらうしかありません。 また、CScrollViewのようなというのが、CViewから派生してChildFrameに貼り付けられると言う意味でしたら、どのコントロールでも要はただのウィンドウですので、お好きなところに貼り付けられます。 (ただし、MFCのドキュメントビューアーキテクチャのビューとしてではなく。例えばビューの子ウィンドウとして貼り付けるイメージです)

参考URL:
http://www.codeguru.com/cpp/controls/controls/
flowergoo
質問者

お礼

ご回答頂きありがとうございます。 グラフ描画では折れ線グラフの表示を行うのですが、横軸の値が大きいため表示部分は全体の一部分にする必要があります。 今回の目的ではビューの子ウインドウとして貼り付ける方法が良さそうですね。 大変良い参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • clsdi99
  • ベストアンサー率63% (31/49)
回答No.2

良い方法とは、自前で実装する方法ですか? それともお手軽に使えるコントロールをお探しですか? 後者なら海外のサイトですが、codeguru や codeproject などの サイトに個人が作成したコントロールが山ほどありますよ^^ 前者ならいろいろご相談に乗れると思いますので、具体的な質問をよろしくお願いします。

flowergoo
質問者

お礼

ご回答頂きありがとうございます。 codeguruを拝見しましたが、様々なコントロールがありますね。 もし、MFCのCScrolViewのようなコントロールはあるのでしたら教えて頂けないでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
  • amru05
  • ベストアンサー率63% (33/52)
回答No.1

 使用しているTOOLがC++BuilderならTChartを使用すれば簡単です。拡大、縮小、スクロール。。なんでもできます。  私は、グラフィカルが必要なプログラムはC++Builder、OSに依存するプログラムはVC++と使い分けています。もし、VC++を使用しているなら、7万程度なのでDeveloperStadio2006を追加購入して、C++Builderで再作成する方が時間的にも早くて良いかも知れません(その他にも、多くのGUI部品があるので、VC++よりも格段にGUI開発効率は良いですね=VBと同様で、C++なので早いし。。)。

flowergoo
質問者

お礼

ご回答頂きありがとうございます。 使用言語はVC++です。 グラフィックではC++Builderが良さそうですね。 今後の参考にさせて頂きます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • グラフ表示の仕方 教えてください

    随時データを取得して、それを折れ線グラフで描画したいと思っています。 また一定期間をスクロールさせて表示できるようにしたいのですが、ピクチャボックスとスクロールバーを使用すれば出来るでしょうか? アドバイスまたはサンプルのプログラム等がありましたら教えて下さい。

  • ダイアログを表示しないexeを作成しようとしてるのですが、どのプロジェクトでしたらよいのでしょうか?

    お世話になります。 VisaulStdio2003 C++ で開発しております。 インストールシールドのある箇所からA.exe(C++で作成)を起動しようとしているのですが、そのA.exeはファイルなどを削除する処理で、ダイアログとかは、何も表示しないようにしたいのです。 そのような場合は、A.exeはどのプロジェクトで作成すればよいのでしょうか? ※私の知識では、MFCのダイアログベースで作成し、ダイアログを非表示にするくらいしか思いつかなかったのです。。。 お手数ですがよろしくお願いします。

  • ダイアログベースアプリのDLL化の方法について

    ダイアログベースで作成してあるアプリexeを DLL化するのですが、その方法が分かりません。 ダイアログの使用はやめるつもりです。 これまでやってみたことは、 プロジェクトのプロパティで、EXEファイルからDLLに設定を 変更しました。 http://hp.vector.co.jp/authors/VA019517/howtodll.html サンプルを見て、既存のソースに__stdcallなどを記載したいのですが DLLが作成されませんでした。 新規にプロジェクトを作成して、サンプル通りにやった場合は DLLが作成されました。 呼び出したい関数は、別々のファイルですが、 1つのファイルにまとめる必要がありますか? ダイアログベースはやめます。 この2つの関数は、同じDLLにします。 ↓DLL化するソース。ここを外部EXEから呼び出したい。 Test_aa_App.cpp --------------------------------------- CTest_aa_App::InitInctance(){ //初期化処理 } ↓呼び出し対象DLL Test_bb_Dlg.cpp -------------------------------- CTest_bb_Dlg::Test() { // 処理 } 初歩的なことだと思いますが、まず、どのように ソースを変更すれば良いか教えてください。 VS2003 C++6.0 よろしくお願いします。

  • CScrollViewの使用方法について

    VC++でCStatic型のピクチャーコントロール(例:m_StaticFlame)に線画の描画を行っています。(描画領域=表示領域) ピクチャーコントロールの表示領域には限度があるため、ワープロやCADと同じように描画領域を大きく取って一部分だけを表示し、スクロールバーで表示領域を移動させたいと考えております。 良い方法をご存じの方いらっしゃいましたら教えて頂けないでしょうか。 今の所、Class WizardでCScrollViewのクラス(CScrollViewTest)を作成し、m_StaticFlameに関連づけてスクロールバー付きの表示にしようと考えていますが、描画領域の定義からCScrollViewTestやm_StaticFlameとの関連付け、表示方法、さらにこの方法が正しいかどうかも分かりません。

  • ダイアログを自分の好きな位置に表示したい

    VCで簡単なプログラムを造っています。 ダイアログベースです。 EXE を実行した時に表示されるダイアログを、自分の指定した位置に 表示させる方法はあるでしょうか。 また、そのダイアログから DoModal関数で別のダイアログを表示する場合、 同様に、自分の指定した位置に表示させる方法はあるでしょうか。 デフォルトのままだと、1つ目のダイアログは画面の中央に、 DoModal関数で表示させたダイアログは、1つ目のダイアログの上に なります。

  • ダイアログをスクロールさせるには

    MFCでウィンドウにダイアログボックスを張り付けた時に、 ダイアログボックスの表示させたい領域よりウィンドウサイズが小さい場合、 自動でスクロールバーを表示させるようにするにはどうすればいいのでしょうか? ダイアログで表示させたい領域を区切ってスクロール判断をさせるようにはできないのでしょうか?

  • ダイアログボックスについて。

    ダイアログボックスについての質問です。 開発環境はVisual C++ 2005.netでありSDKを利用しています。 ダイアログボックスにPicture Controlを貼り付け、Combo Boxの内容が変わるたびにそのPicture Controlに画像を表示するようなプログラムを作りたいと考えています。 自分が考える手順としてはまずPicture Controlについてサブクラス化を行い、親のダイアログボックスが表示されると同時にPicture ControlのプロシージャでWM_CREATEメッセージを受け取り描画を行う。 そして親のダイアログボックスに貼り付けたCombo Boxの内容が変更された場合に、Picture ControlのウィンドウハンドルにむけてWM_PAINTメッセージを送信する。 こんな手順で行いたいのですが、少し不安な部分が出てきました。 Combo Boxの内容が変更され、Picture Controlのウィンドウハンドルに向けてWM_PAINTメッセージを送信し、Picture ControlプロシージャではWM_PAINTメッセージがきたとき画像の描画を行う場合、このプロシージャではどの画像を描画してよいか不明です。 そのため何番の画像の表示命令が来たのかを示すために、親のダイアログボックスに貼り付けたCombo Boxが変更された場合、Picture Controlに向けてWM_PAINTメッセージと表示画像番号をパラメータとして送信したいのです。 もちろんグローバル変数を用意すれば簡単なのですが、できるだけ使用しないように記述をしたいのです。そこで考えたのが、 SendMessage(GetDlgItem(hDlgWnd, IDC_PICTURE), WM_PAINT, 0, MAKELPARAM(0, number)); このようにnumberをLPARAMの下位ワードとして送信しようと考えました。 このメッセージ送信を行い、Picture ControlプロシージャでWM_PAINTメッセージが到着したとき、LOWORD(lparam)からnumberを取り出す。 実現したい目的のため、このような方法を考えましたが、エラーなく実行できるでしょうか? もしあやしい部分が見つかった場合はアドバイスをお願いします。そしてこの方法よりも簡単に処理できる方法があれば教えていただきたいです。 自分としてはサブクラス化は面倒なので、Picture Controlをオーナードローとして扱う方法も考えましたが、うまく動きませんでしたTT

  • ダイアログボックス・・・・・ bySDK

    現在SDKにて画像処理ソフトを作成しています。もちろん個人にて。 そこで確実にほしい機能”ヒストグラム”の表示を行おうと思ったのですが、問題が起こりました。 目的は”2値化"という処理に伴い、ダイアログボックスに入力した画像のヒストグラムを表示させたいということです。 もちろんヒストグラムは単に白黒だけで表示させたいと思っています。 問題というのはダイアログボックスに任意の図形をどのように描画するかです。ビットマップの描画は以前行ったことがあるのですが、任意の図形は行ったことがありませんでした。 試しに、ダイアログボックスにPicture Controlを貼り付け、そのPicture ControlのデバイスコンテキストをGetDCにより無理やり取得し、そのデバイスコンテキストに直線などの描画を行ってみましたが、表示はされませんでした。(あたりまえかも・・・・) そこでまず、ダイアログボックスに使用するコントロール類は何を設定したらよいか? そして、そのコントロールから取得したデバイスコンテキストに直接描画は可能か? これらの質問に答えられる方はアドバイスをお願いしたいと思います。 よろしくお願いします。

  • スクロール戻りを止めたい(Word2007)

    表示倍率を300%位に上げ、描画キャンバスで図の編集時に、 スクリーンより広くなりますから、スクロールバーを右端へ移動させるのですが、 ここで、図形をマウスでコピーしたりすると、スクロールバーが描画キャンバスの左端へ移動してしまいます。 非常に面倒なので、スクロールバーが戻らないように出来ませんか?

  • ダイアログ、ボタンについて

    VC++でプログラミングしています。 MFC AppWizard(exe) でダイアログベースで造っています。 以下の方法を教えてください。 ・EXE起動時、ダイアログのサイズを変更したい。 起動時に画面サイズをチェックして、画面いっぱいの大きさにしたいため。 ・EXE起動後、ボタンに表示している文字列を変更したい。 識者の方、ご教授願います。