• 締切済み

MFCプログラミング

http://tech.obihiro.ac.jp/~fm/file1/file01.htm 上のURLのプログラムをVisualStudio2008のMFCで書き直したいのですが どうすればいいですか?

  • tnk48
  • お礼率9% (7/76)

みんなの回答

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.10

>折れ線グラフを関数にするのは前からやってみたのですがうまくいかなかったので質問させていただいたのですが、すみません それは基礎が出来ていないからです。 基礎ができていれば何をすれば良いかは自ずと想像ができるようになります。 ちなみにC++とMFCは非常に難易度が高いプログラミング環境と言って良いと思います。 Excelであれば容易に出来るデータの折れ線グラフや棒グラフ表示をあえてC++とMFCで行う意図をお聞かせ下さい。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.9

>ありがとうございます >あと、先ほどの折れ線と棒グラフを関数でわけたいのですが >できますか? なんでも聞いたりサンプルで済ますと技量が伸びませんので自分で考えてみてください。 考えてもわからない部分があれば聞いてもらっても構いませんが、現状は何も調べたりじっくり考えていない様に見えます。 これはMFC以前の基本的なプログラムの作りかたの質問です。C/C++を十分に勉強された人では無いのですよね?まず、そこから勉強されてMFCに入れれたほうが良いと思います。 ちなみに出来るか出来ないかで言えば出来ますが、本当にC++とMFCで良いのか自分の力量に合っているのかVB.NETやC#のほうが難易度が低いと思いますので、そういう所も含めて検討されたほうが良いと思います。

tnk48
質問者

補足

折れ線グラフを関数にするのは前からやってみたのですがうまくいかなかったので質問させていただいたのですが、すみません

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.8

>例えば、棒グラフとかです CDC::FillRect等を使えば四角形に塗りつぶす事は可能です。 http://msdn.microsoft.com/ja-jp/library/0421fewx%28v=vs.80%29

tnk48
質問者

補足

ありがとうございます あと、先ほどの折れ線と棒グラフを関数でわけたいのですが できますか?

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.7

>この後グラフにメモリを打ち込みたいと思うのですが 目盛りならforループで回しながらMoveTo、LineToを使えば良いだけでは?

tnk48
質問者

補足

ありがとうございます 他にもグラフの種類を変えたりできますか? 例えば、棒グラフとかです

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.6

とりあえず、OnFileOpen()の最後でUpdateAllViews(NULL);すればロード後に画面が更新されるとおもいます。 現状画面の更新が呼び出されないみたいなので。

tnk48
質問者

補足

ありがとうございます ちゃんとグラフが表示されました この後グラフにメモリを打ち込みたいと思うのですが 何かいい方法はありませんかね...

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.5

>MoveTo、LineToで確認しましたが何も表示されませんでした >グラフの場合と同様にウィンドウの大きさを変えると線が表示されました それは、MoveToでブレークはするが何も表示されないということでしょうか? それともOnDraw自体が呼び出されないと言うことでしょうか? 情報が断片過ぎて、答えようがありません。 とりあえず現状のコードを貼ってもらえますか?

tnk48
質問者

補足

// graphView.cpp : CgraphView クラスの実装 // #include "stdafx.h" #include "graph.h" #include "graphDoc.h" #include "graphView.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CgraphView IMPLEMENT_DYNCREATE(CgraphView, CView) BEGIN_MESSAGE_MAP(CgraphView, CView) // 標準印刷コマンド ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview) END_MESSAGE_MAP() // CgraphView コンストラクション/デストラクション CgraphView::CgraphView() { // TODO: 構築コードをここに追加します。 } CgraphView::~CgraphView() { } BOOL CgraphView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: この位置で CREATESTRUCT cs を修正して Window クラスまたはスタイルを // 修正してください。 return CView::PreCreateWindow(cs); } // CgraphView 描画 void CgraphView::OnDraw(CDC* pDC) { CgraphDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: この場所にネイティブ データ用の描画コードを追加します。 int x0=50, y0=450, xsp=700, ysp=400, xp, yp ; // float xmax, ymax; int DataN=pDoc->DN, i; pDC->MoveTo(100,100); pDC->LineTo(100,100); pDC->SetTextColor(RGB(0,0,255)); pDC->TextOut(0,0,"汎用グラフ表示プログラム"); CPen pc1(PS_SOLID,1,RGB(0,0,0)); //ペンの初期化 CPen pc2(PS_SOLID,2,RGB(0,0,0)); CPen* OldPen=pDC->SelectObject(&pc1); //ペンの変更 if(DataN!=0){ pDC->SelectObject(pc2); pDC->MoveTo(x0,y0); pDC->LineTo(x0+xsp,y0); pDC->MoveTo(x0,y0); pDC->LineTo(x0 ,y0-ysp); for( i=0; i<=DataN; i++){ xp=(int)(x0+pDoc->Dx[i]/100.0*xsp); yp=(int)(y0-pDoc->Dy[i]/100.0*ysp); if(i==0) pDC->MoveTo(xp,yp); else pDC->LineTo(xp,yp); } } pDC->SelectObject(OldPen); } // CgraphView 印刷 BOOL CgraphView::OnPreparePrinting(CPrintInfo* pInfo) { // 既定の印刷準備 return DoPreparePrinting(pInfo); } void CgraphView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: 印刷前の特別な初期化処理を追加してください。 } void CgraphView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: 印刷後の後処理を追加してください。 } // CgraphView 診断 #ifdef _DEBUG void CgraphView::AssertValid() const { CView::AssertValid(); } void CgraphView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CgraphDoc* CgraphView::GetDocument() const // デバッグ以外のバージョンはインラインです。 { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CgraphDoc))); return (CgraphDoc*)m_pDocument; } #endif //_DEBUG // CgraphView メッセージ ハンドラ

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.4

デバッガのことに一言も答えてもらえないのはなぜでしょう? OnDrawの呼び出しがちゃんと行われているか確認することは非常に重要なのですが。

tnk48
質問者

補足

MoveTo、LineToで確認しましたが何も表示されませんでした グラフの場合と同様にウィンドウの大きさを変えると線が表示されました

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

私の聞いたことの半分は答えてもらっていませんね。 MoveTo,LineToで線が引かれているかデバッガで確認をお願いします。

tnk48
質問者

補足

実行したあとにファイルを開いてウインドウのサイズを変更したら グラフは表示されました。 それなしでグラフが表示されるようにするにはどうしたらいいでしょうか。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

グラフだけが表示されないのと、文字やXY軸がまったく表示されないのでは意味が全く異なりますが、どちらでしょうか? あとデバッガでトレースはできませんか?

tnk48
質問者

補足

文字は表示されますがXY軸は表示されていないですね

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

MFCの仕様についてはほとんど変わっていないので、そのまま使えると思いますが? ただし、クラスウィザードの仕様は劇的に変わっています。

tnk48
質問者

補足

そのまま使ってみたら実行はできたのですがグラフが表示されませんでした

関連するQ&A

  • MFCプログラミング

    http://tech.obihiro.ac.jp/~fm/file1/file01.htm このページのプログラムをVisualStudio2008で作成したのですが うまく動作しません。どうすればいいでしょうか。 うまく動いた方いたらどのようにしたか教えてください

  • MFCプログラミング

    http://tech.obihiro.ac.jp/~fm/file1/file01.htm 上のURLのプログラムでグラフにメモリを打ちたいのですが どうすればいいですか?

  • MFCの関数について

    http://tech.obihiro.ac.jp/~fm/file1/file01.htm 上記のURLのプログラムの折れ線グラフを描く処理の部分を関数化したいのですが うまくいきませんでした。 どうのように書けばよいかわかりやすく教えてください

  • MFCプログラミング

    VisualStudio2008を使ってMFCでゲームを作ろうと考えています。 参考になるサイトなどはありますか?

  • MFCの静的リンク

    WindowsXP + VisualStudio2008 を使ってMFCアプリを作成中です。 また、ActiveXなどは使わずにプログラムのコピーだけで配布できるものを作成しようとしています。 そこで質問なのですが、 MFCだけ使ったプログラムを配布する時、MFCを静的リンクしてしまえば、 他のDLLなどは一緒に配布する必要はないのでしょうか? MFCやネイティブプログラミングに詳しい方がいましたら教えて下さい。 どうぞ宜しくお願い致します。

  • MFC、APIについて教えてください

    はじめまして、dio-dioです。 今回からこのOKWaveにお世話になります。 よろしくお願いいたします。 早速ですが、質問させていただきます。 私はSE目指してプログラムを勉強していますが、 MFC,APIを使って2つのファイルを比較し、合成して 新たなファイルを作成するというプログラムを 作成することになりました。 ファイルはiniファイルを用います。 私はVB6を使用したことがあるのですが、形は似ていても MFCはまったく違う形式の言語です。 今まで一度もMFC使用したことがありません。 APIの関数も使用したことがありません。 そこでみなさまに助けていただきたいのです。 MFCの使用方法がよく分かるサイト、本など知っている方 教えてください。 あと、APIを使用したプログラムを作成するに当たって、 サンプルプログラムなどが記載されていてすぐにでも プログラム作成に参考になるようなサイトを知っている方 教えてください。 とてもわがままなお願いでしょうが大変困っています。 2週間でプログラムを作成しなければならず、時間がありません。 みなさまの助けが必要不可欠です。 どうか宜しくお願いいたします。

  • 「MFCを使用しない」から「MFCのスタティックライブラリを使用」

    VC++初心者ですが、 Win32Applicationで「MFCを使用しない」で作成したプログラムが正常動作しました。 そこで 「MFCを使用しない」から「MFCのスタティックライブラリを使用」にしてビルドしたところ、リンク中に どんどんエラーがでます。 関数関係のエラーなのですが。 (1) どうすればエラーを無くせるのでしょうか (2) 「MFCのスタティックライブラリを使用」にするとどの様なメリットがあるのか(説明している参考URLなど)。 教えて下さい

  • Macでのプログラミング

    Windowsではソフトを作るとき VisualStudioなどを使って exeファイルを作りますが マッキントッシュのときは どんなソフトで なんという拡張子のソフトを作るのでしょうか?

  • プログラミング 古い本でも大丈夫ですか?

    プログラムを勉強しようと、市の図書館で本を借りてきました。 しかし、取り扱っているのがVisualC++2010(VisualStudio2010)なんです。 Visual Studio 2015を使用するつもりですが、 バージョン?が古くても問題ないのでしょうか? 同じコードなのに動かない、エラーが出るなどはあるのでしょうか? よろしくお願いします。

  • mfc vc++2005 で構成が正しくない・・・

    vc++2005 mfcで作成したプログラムで上記が出て他のPCで動きません。 mfc以外はファイルのコピーをするとかだけの単純なツールなのでmfcが 悪さしているとは思います。 mfcをスタティックでリンクにして、コード生成のところのマルチスレッドDLLを マルチスレッドに変えるとやはりいけますが、別にあったwindows7ではmfcと コード生成のところを変えなくても問題なくいけました。 vc++2005 redistributable パッケージを入れても変わりません。 mfcは別物なのでしょうか?? ネットを見ているとredistributableパッケージを入れれば大丈夫!!という 感じなのですが。 すいませんがどなたかご教授ください。

専門家に質問してみよう