MFCから最新のChart Control使用できないでしょうか – プログラミング – Home

MFCから最新のChart Contr...
 
通知
すべてクリア

[解決済] MFCから最新のChart Control使用できないでしょうか


eizo
 eizo
(@eizo)
ゲスト
結合: 13年前
投稿: 13
Topic starter  

MFC(VS2010、clrサポートなしで使用中)から、ActiveXコントロール(ocx)を
使用するかのように、.NET4のChart Control(グラフ表示)、DataGridView
(ワークシート形式のデータ表示)を使用する方法はないでしょうか。
もしくは同等のものをご存知ないでしょうか。
最初から.netで作れと言ってしまえばそれまでですが
出来るだけMFCを使って表示部だけ前述の2つが使用できないかと思いまして。
現在、当方グラフはDC上に自作、データ表示はListCtrl(こちらはこれでも良いかな)
を使用しています。特にグラフが系列・文字・表示数・色等の管理が簡略化できない
かと思います。
方法あれば何卒ご指導お願い致します。


引用未解決
トピックタグ
Atata!!
 Atata!!
(@Atata!!)
ゲスト
結合: 18年前
投稿: 25
 

Atata!!です。

CLRサポートを使用できるかどうかで話は変わってくると思います。
以下のページに書いてあるとおりCLRサポートを有効にできませんか?
http://msdn.microsoft.com/ja-jp/library/ahdd1h97.aspx

なお、CLRサポート無しでも.NETのコントロールを
ActiveXコントロールとして使用することは可能ですが、
MFCのみではコーディング量が上記とは数倍変わることになります。

以上です。


返信引用
eizo
 eizo
(@eizo)
ゲスト
結合: 13年前
投稿: 13
Topic starter  

Atata!!様
ご返答有難うございます。
当方VC初心者(Cは経験あり、C++は上記に記載した
簡単なものは作成できるようになったレベルです)
なせいか上記リンク読んでも
日本語含め良く理解できません・・・・。

>以下のページに書いてあるとおりCLRサポートを有効にできませんか?
ネイティブの他にCLRサポート有効バージョンとして
作成しても良いと思っています。

web上を検索してみたのですが良い例が見つからず
もし例をご存知でしたら教えて頂けないでしょうか。
何卒宜しくお願い致します。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

> 日本語含め良く理解できません・・・・。
うーーん、
まず知識をえたほうがいいですね。
C++言語ならココ
http://www7b.biglobe.ne.jp/~robe/cpphtml/index.html
ここをマスターできれば、Atata!!さんの紹介のサイトも分かると思います。

> web上を検索してみたのですが良い例が見つからず
> もし例をご存知でしたら教えて頂けないでしょうか。
例は、Atata!!さんの紹介のサイトからサンプル等ダウンロードできると思うのですが
まず、ロペールのC++教室をみて、理解してもらうのが先だと思います。


返信引用
eizo
 eizo
(@eizo)
ゲスト
結合: 13年前
投稿: 13
Topic starter  

ITO様

コメント有難うございます。
「ロベールC++」ご推薦有難うございます。
C++を夜な夜な始めて3ヶ月で今までに
C++クラスと継承、明解C++、プログラミング学習シリーズC++1,2,3、
明快入門VC++ビギナー、C++の絵本(イメトレ用)等を気合で詰め込みました。
(忘れたり応用できてない分が多々ありますけども)
ここ半月ロベールC++に出会い、網羅範囲も多く且つ分かり易く重宝しています。
実際にVCで窓系書いて動かしてみるとミスが多く苦労してますぅ・・・。
ソフト屋でないので質問できる人もいなくてこのスレに来た次第です。

> 日本語含め良く理解できません・・・・。
> 例は、Atata!!さんの紹介のサイトからサンプル等ダウンロードできると思うのですが
MSDNのこのページはカタカナが多くUSサイトで直見したら
そっちのほうが読み易かったですぅ。
ということで、現在webの例題のとおりやってみると「ツールボックス」の上部に
出てくるような簡単なコントロールは制御できました。
が、今夜目的のChartコントロールを制御するコードを入れたところで
コケています。
感触としてMFCからでなく直接C++・CLI CLRで書けばすぐいけると思います(泣)。
ということで現在MFCでのChartの実装でコケているところです。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

> 感触としてMFCからでなく直接C++・CLI CLRで書けばすぐいけると思います(泣)。
> ということで現在MFCでのChartの実装でコケているところです。
C++・CLI CLRのほうが分かるのなら、MFCを使わずに作った方が楽かも知れません。
ぼくは、C++・CLI CLRに関してまだ経験ないですので、アドバイスできません。
ActiveXコントロールを使わずMFCで作るのはかなり難しいと思います。


返信引用
Atata!!
 Atata!!
(@Atata!!)
ゲスト
結合: 18年前
投稿: 25
 

MSDNの手順に書いてあるとおりにプロジェクトを作れば
問題はほとんど発生しないと思っています。

MSDNの手順どおりに作ってみました。
私の環境ではこれで動作しています。
http://atata.sakura.ne.jp/download/charttest_20111119.zip
eizoさんの作られたプロジェクトと比較してみると良いと思います。

また、Releaseモードでビルドしたファイルも合わせて貼り付けておきます。
http://atata.sakura.ne.jp/download/charttest_exe_20111119.zip

この過程で判明したのはMSDNでは再配布するファイルの記述が誤っており
mfcmifc90.dll というファイルは実際には存在せず、
mfcmifc80.dll を再配布しなければならないということです。


返信引用
eizo
 eizo
(@eizo)
ゲスト
結合: 13年前
投稿: 13
Topic starter  

Atata!!様

ご返信有難う御座います。

上記ホスティングの例有難う御座いました。
私のほうではMFCダイアログアプリにホスティングする例題を参考にして、
http://msdn.microsoft.com/ja-jp/library/94t3ebxz.aspx)・・・①
MFCダイアログアプリ上にチャートを配置していましたが、
stdafx.h内に#using <***.dll>、他名前空間がなかったことが原因でした。
ビューにホスティングする場合も含めて勉強になりました。
http://msdn.microsoft.com/ja-jp/library/389zdaby.aspx)・・・②
有難う御座います。

そこで一つ疑問が出てきたのですが(最終的にはこれを実現できれば
思っています)、①の例からして、Doc-Viewベースのアプリにおいて
CFormViewを使用するとした場合、MFCのコントロールの一つを配置する
ようにChartコントロールが配置できるとすれば、
1.①のようにChartが使えるC#等でフォームを作成して
  MFCからDDX_ManagedControl(pDX, IDC_CTRL1, m_MyControl);
  にてコントロール変数を対応付けてプログラムを作成する
2.②のようにCWinFormsViewからViewクラスを派生させて
  GetControlにてコントロール変数を取り出しプログラムを作成する
  (この場合ビューのクライアント領域全体を占有する趣旨のことが
  書いてあるのでコントロールの位置をどう決めるか等良くわからない・・・)
のどちらとなるか(両方可能?)予想できればコメント頂けないでしょうか。
何卒宜しくお願い致します。
例題を見て何とか理解しようとしている人(私)のレベルで上記のように
思っているだけですので、とんちんかんなことを言っていたらすいません。


返信引用
Atata!!
 Atata!!
(@Atata!!)
ゲスト
結合: 18年前
投稿: 25
 

>1.
C#等の.NETな言語で何かを作成する必要はなく、直接Chartを埋め込むことができます。

また、MSDNにあるとおりDDX_ManagedControlを使用しても良いのですが、
MFCの習熟度が低いのであれば、CWinFormsControl<T>::CreateManagedControlを
OnInitDialog内で呼び出した方が理解しやすいと思います。

>2.
可能ですが、この場合は1の方が良い選択肢です。


返信引用
eizo
 eizo
(@eizo)
ゲスト
結合: 13年前
投稿: 13
Topic starter  

Atata!!様、ITO様

ご返答有難うございます。
こちらでCWinFormsControl<T>::CreateManagedControlを使う方法にて
CFormViewにて簡単なサンプルを作成したところ(細かい話はさておき)
Chartを実装しグラフを表示することができました。
練習でいろいろプロパティ等いじってみたいと思います。
有難うございました。
また次回行き詰ったら救助して頂けないかと思います。
その際は何卒宜しくお願いいたします。


返信引用
Atata!!
 Atata!!
(@Atata!!)
ゲスト
結合: 18年前
投稿: 25
 

一般的な実装方法が分かったところで、
MFCだけで実装したサンプルを提示しておきます。

http://atata.sakura.ne.jp/download/charttest2_20111125.zip

OSのインストールフォルダが標準ではない場合、
ビルドエラーになるので適宜修正してください。

COM公開されていない.NETのクラスを使用するには
リフレクションを使用するしかないため、
コーディング量が非常に増えていることが分かるかと思います。


返信引用
eizo
 eizo
(@eizo)
ゲスト
結合: 13年前
投稿: 13
Topic starter  

Atata!!様

追加のサンプル有難うございます。
たしかにCLRをONにしたほうが良さそうですね。
現在の私には作成できそうにないですし、
理解できない分が多々あります。
とりあえずCLRでいきたいと思います。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました