none
描画がWindowより大きくなったとき 表示させる機能の スクロールバーをつけたい RRS feed

  • 質問

  • 描画がWindowより大きくなったとき 表示させる機能の スクロールバーをつけたい
    現在 描画(アイコンのような)をしています。これが大きいとWindowを最大化しても隠れるので スクロールばーをつけたいのですが
    どこをどう直す(追加)したよいでしょうか
    よろしくおねがいします
    WindowsXP VS6.0 C++です あとMFCでおこなっています

    2009年9月21日 23:49

回答

  • 「MFC SetScrollInfo」あたりで検索してみてはいかがでしょうか。
    情報を厳選する必要はありますが、色々と参考になりそうです。(必要に応じてキーワードを追加して検索結果を絞って下さい)

    http://www.google.com/search?hl=ja&safe=off&num=50&q=MFC+SetScrollInfo&lr=lang_ja
    http://www.bing.com/search?q=MFC+SetScrollInfo&go=&form=QBRE&filt=lf

    なお、Visual C++ 6.0 のサポートは既に切れています。
    古い環境の保守以外の目的で利用することは避けた方が良いと思います。(念のため書きました)

    # 時間がないので、とりあえずここまで。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月22日 0:15
    モデレータ
  • 現状で、MFCの何をどのように使ってアイコンのようなものを描画しているのかわかりませんので、
    どうするのが最も近道なのかはわかりませんが、
    MFCを使われているのであれば、CScrollViewを使うのが最も簡単ではないかと思います。
    http://msdn.microsoft.com/ja-jp/library/3t073d82(VS.80).aspx
    2009年9月22日 2:35
  • 小生のものをCviewで検索したのですが なく、VCでのクラスの窓をいても
    CaboutDlg,CChildView,Ckolam,CKolamApp,CMainframe,CParameterSetDlg
    CChildView が CView クラスから派生していませんか。
    そして画面全体がスクロールしないので 小生のに取り込むのに どうしてよいかわかりませんでした。
    自力で実現するためには、スクロール量に合わせて原点をずらして描画するか、ScrollWindow を使う等の対応が必要になるはずです。
    CScrollView ではその処理が隠蔽されているので、気にせず描画できるとは思います。(描画しない部分の処理が重いのであれば考え直す必要があるかもしれません)

    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月22日 9:14
    モデレータ
  • VCのClassViewをみるのですが そこには CViewがないのです。
    CViewがないとだめでしょうか( むずかしいでしょうか
    すみません、確認が足りなかったのですが、ドキュメント/ビュー アーキテクチャをサポートしないタイプの MFC アプリケーションプロジェクトであれば、確かに CChildView は CWnd から直接派生しており、CView は関連しませんね。
    CView からの派生クラスであれば、CScrollView から派生するようにする等、簡単にできた可能性はあります。

    CWnd から直接派生せず、CScrollView から派生するようにすることもできるかもしれませんが、細かくは調査していません。
    (もしかしたら、色々と罠があるかもしれません)


    ところで、周りに相談できる人はいないのでしょうか?
    「そのScrollWindowというのが いれるにはどうするのでしょうか?」という質問に一度答えることはできるかもしれませんが、その後も同じように質問されていてはなかなか進みません。
    MFC プログラミングを学んでいける環境(相談できる人等)、資料(書籍、サイト等)が整っていないと、続けていくのはしんどいかもしれません。

    # さらに言うと、「VC6 で」という条件についてこれる人はかなり少数
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月22日 13:20
    モデレータ
  • すみません 化石のバージョンで。 今の小生には新版の入手はむずかしく。
    古い環境でないといけないという強い理由がない限り、移行する算段をつけることをお薦めしておきます。
    (買うことができない何らかの事情があったとしても、メンテナンスされていない古いバージョンを使い続けることは今後何らかの問題を引き起こすリスクを抱え込むことになる。すぐにできなくても、将来的には何らかの対応を取る方が望ましい)
    CView から派生したクラスでは、メッセージ マップに登録されたメンバ関数 OnHScroll と OnVScroll をオーバーライドすると、標準スクロールを直接扱うことができます。CScrollView は CView の機能に次の機能を追加します。
    とあるから だめかな
    なぜそう判断したのかの説明がないので何とも言えません。


    別スレッドの方でも書きましたが、こちらのスレッドも同様です。
    > 正直なところ、フォーラムベースで事細かに教えることはできません。
    > 23 日で連休も終わりますし、その後もこの調子だと、私は回答できませんのであしからずご了承下さい。

    # 平日はじっくりと対応する余裕がないこと、週末はそこまで回答活動に時間を割いていないことが理由です。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月22日 15:23
    モデレータ
  • どーも、PATIOです。

    静観していましたが、
    今のやり方では効率が悪いと思いますし、下手をすると間違った理解のまま進んでしまうのではないかと
    感じましたので余計なお世話かもしれませんが、書き込んで見ます。
    どうしても納得がいかないと言う話なら強要する気は有りませんのであしからず。

    質問内容や受け答えの内容を見ているとC++言語その物の知識が足りないと思います。
    VC++でMFCを使ってアプリケーションを作成する場合、C++言語の文法に関する知識と
    オブジェクト指向に関する知識(クラスとか派生とかそういった知識)は必須になります。
    これがないままコーディングのパターンだけを追いかけても多分本当の意味で理解出来た状態には
    ならないと思います。これは基礎として必要な知識は欠けている為です。

    VC++でMFCを使ってアプリケーションを作成する場合、
    Windowsの仕組みに関する知識(イベントドリブンの理解とOS上でどのようなイベントが起こるのか)が
    必要になりますし、それをうまくハンドリングする為にMFCがどのようなフレームワークを提供しているか
    を理解する必要があります。
    ですが、これらを理解し、使いこなす上でC++言語の知識はどうしても必要なものです。
    ですから、少なくともウインドウを表示しないコンソールプログラム上で自作のクラスを作成し、
    それを使いこなしてコンソール上で動作するアプリケーションを作成できる程度の知識は必要です。
    これを学習する為にはVC++の入門書ではなく、C++言語の入門書が必要です。
    私としては、いきなりウインドウが表示されるようなアプリではなく、コンソールアプリ(ウインドウが表示されない物)で
    C++言語の勉強をちゃんとやった方がかえって早道になると思っています。
    その上でWindowsの仕組みの勉強やMFCの使い方の勉強を進めるのがベストだと思います。

    Azuleanさんも書かれていますが、こういった掲示板で一から習うのは事実上無理です。
    掲示板はあらかたの知識がある状態でピンポイントを質問して解決するのには向いていますが、
    一から系統立てて習うには向いていません。
    系統立てて勉強するのでしたら、入門書を用意して勉強されることをお勧めします。
    入門書の中で分からない部分をひとつずつ解決すると言うのであれば、
    掲示板でも何とかなるかもしれません。
    にしても、基礎的な知識が無いのではその部分から説明しなくてはいけなくなるので
    掲示板で勉強しようと言うのは無理があると思いますけれど。

    書き込んでいる人も常時ここを見ているわけでは有りませんし、
    すばやいレスポンスを期待されても困るという部分もありますね。

    追記:
    開発環境に関してもAzuleanさんと同意見です。
    VC++6.0既にサポートが終わった環境なのでVC++6.0向けのサンプルを探すのも一苦労だと思います。
    書籍に関しても古い環境の書籍を探すのは結構大変でしょうし、Web上の情報も徐々に減って行く事になります。
    また、それとは別の問題としてVC++6.0のコンパイラはC++言語の規格への準拠率が低く、最新のコンパイラでは
    OKな記述がNGになるなど昔のソフトのメンテナンス以外に使うのはかなりリスクが大きくなっています。
    目的が良く分からないので何ともですが、
    勉強の為にされているのでしたらまずはC++言語をVC++2008ExpressEditionを使って
    コンソールプログラムで勉強された方が良いと思います。
    その上でMFCを使いたいならStandardEdition以上の環境の購入を考えるかですね。
    確か、ExpressEditionを持っていれば、アップグレード版が使えたと思いますし。(幾ばくかは安くなります)
    あと、VC++でMFCを使ってプログラムを作成する事が目標なのか、Windowsアプリが作成できれば良いのか
    によっても話は変わってきます。
    VC++に拘る必要が無いのであれば、VC#ならExpressEditionでも一通りの事はできるので選択肢としては
    ありなのではないかと思います。

    あと気になったのが、ベースにしているアプリケーションです。
    ベースにしているアプリケーションに関してご自分で作成なさったとして
    全てのコードに関してきちんと理解された上でコーディングされたのでしょうか?
    ベースのアプリケーションの実装に問題がある場合、それを生かす為に益々歪んだ実装になる事も考えられます。
    ベースにしているアプリケーションその物に不安要素があるのであれば、
    アプリとしての仕様だけを生かして組みなおした方が良い物ができるケースもあると思うので
    一考された方が良いと思いますよ。

    解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。
    2009年9月25日 3:04
  • 無理でもできないかと あせっている状態です。
    2008をInstallしてみるつもりです。
    無理矢理実現したものは遠からず崩壊します。
    時間的な猶予があるのであれば、きちんと現状を理解し、適切な変更を加えるという順序で進めるべきです。

    なお、Visual C++ 2008 Express Edition には MFC がありません。
    現在のプロジェクトをそのまま読み込んでもまず、コンパイルできませんので、一度手元のソースを捨てる覚悟を持って下さい。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月26日 12:08
    モデレータ

すべての返信

  • 「MFC SetScrollInfo」あたりで検索してみてはいかがでしょうか。
    情報を厳選する必要はありますが、色々と参考になりそうです。(必要に応じてキーワードを追加して検索結果を絞って下さい)

    http://www.google.com/search?hl=ja&safe=off&num=50&q=MFC+SetScrollInfo&lr=lang_ja
    http://www.bing.com/search?q=MFC+SetScrollInfo&go=&form=QBRE&filt=lf

    なお、Visual C++ 6.0 のサポートは既に切れています。
    古い環境の保守以外の目的で利用することは避けた方が良いと思います。(念のため書きました)

    # 時間がないので、とりあえずここまで。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月22日 0:15
    モデレータ
  • 現状で、MFCの何をどのように使ってアイコンのようなものを描画しているのかわかりませんので、
    どうするのが最も近道なのかはわかりませんが、
    MFCを使われているのであれば、CScrollViewを使うのが最も簡単ではないかと思います。
    http://msdn.microsoft.com/ja-jp/library/3t073d82(VS.80).aspx
    2009年9月22日 2:35
  • ありがとうございました

    作ったといっても 枠組みをつくってあるのに対して コードを書き食えて 現在に到っているので どう説明していかわからないのですが
    上のCScrollViewの説明で
    CView
     から派生したクラスでは、メッセージ マップに登録されたメンバ関数 OnHScroll と OnVScroll をオーバーライドすると、標準スクロールを直接扱うことができます。CScrollView は CView の機能に次の機能を追加します。
    とあります。
    小生のものをCviewで検索したのですが なく、VCでのクラスの窓をいても
    CaboutDlg,CChildView,Ckolam,CKolamApp,CMainframe,CParameterSetDlg
    でKolam、Paramerterset というのはこのプログラムで小生が名づけたものです。
    描画は最初に出てくるWindowに描かせています。これにスクロールをつけたいのです。
    情報が不足しているかと思いますが、ぜひ どのようにすれば 可能な おねがいします。
    2009年9月22日 5:32
  • ありがとうございました。
    上の ExScrollBarをみました。 このような縦軸と横軸のスクロールが出て、(中のX値の部分スクロールは要らない)
    それが画面全体をスクロールすることを期待しています。なお このSampleでは縦軸の矢印では数値や中のPoiterが動かないので なにか不足しているのかもしれません。 そして画面全体がスクロールしないので 小生のに取り込むのに どうしてよいかわかりませんでした。


    void CExScrollBarDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
    // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
    TRACE("HScroll:%d,%d\n",nSBCode,nPos);
    bool scx;
      CSliderCtrl* pTrackBar=(CSliderCtrl*)pScrollBar;
    int hPos;

    if(pScrollBar == NULL) {
    scx=FALSE;
    hPos=xPos;
    }
    else  if (pTrackBar->GetDlgCtrlID() == IDC_SCROLLBAR_X){ 
    TRACE("IDC_SCROLLBAR_X\n");
    scx=TRUE;
    hPos=aPos;
    };

    switch(nSBCode){

    case SB_THUMBPOSITION :
    case SB_THUMBTRACK:
    TRACE("HScroll:THMB:%d,%d\n",nSBCode,nPos);
    hPos = nPos;
    break;
    case SB_LINEUP :
    TRACE("HScroll:LineUP:%d,%d\n",nSBCode,nPos);
    hPos--;
    break;
    case SB_LINEDOWN :
    TRACE("HScroll:LineDown:%d,%d\n",nSBCode,nPos);
    hPos++;
    break;
    case SB_PAGEUP :
    TRACE("HScroll:PageUP:%d,%d\n",nSBCode,nPos);
    hPos-=5;
    break;
    case SB_PAGEDOWN :
    TRACE("HScroll:PageDown:%d,%d\n",nSBCode,nPos);
    hPos+=5;
    break;
    }

    scinfo.fMask = SIF_POS;
    scinfo.nPos =hPos;

    if(scx){
    aPos = hPos;
    ::SetScrollInfo(::GetDlgItem(m_hWnd,IDC_SCROLLBAR_X),SB_CTL,&scinfo,1);
    itoa(aPos,buffer,10);
    SetDlgItemText(IDC_EDIT_A,buffer);
    }
    else{
    xPos = hPos;
    SetScrollInfo(SB_HORZ,&scinfo,1);
    itoa(xPos,buffer,10);
    SetDlgItemText(IDC_EDIT_X,buffer);
    }

    CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
    }

    2009年9月22日 5:40
  • 小生のものをCviewで検索したのですが なく、VCでのクラスの窓をいても
    CaboutDlg,CChildView,Ckolam,CKolamApp,CMainframe,CParameterSetDlg
    CChildView が CView クラスから派生していませんか。
    そして画面全体がスクロールしないので 小生のに取り込むのに どうしてよいかわかりませんでした。
    自力で実現するためには、スクロール量に合わせて原点をずらして描画するか、ScrollWindow を使う等の対応が必要になるはずです。
    CScrollView ではその処理が隠蔽されているので、気にせず描画できるとは思います。(描画しない部分の処理が重いのであれば考え直す必要があるかもしれません)

    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月22日 9:14
    モデレータ
  • VCのClassViewをみるのですが そこには CViewがないのです。
    CViewがないとだめでしょうか( むずかしいでしょうか
    あるいは Cviewをつくり その中に今のCChildViewをしたに置く(派生させる?)
    あるいはCChildViewをCViewに変えられないか?

    そのScrollWindowというのが いれるにはどうするのでしょうか?

    現行は

    // MainFrm.h : interface of the CMainFrame class
    //
    /////////////////////////////////////////////////////////////////////////////

    #if !defined(AFX_MAINFRM_H__FE74EB15_C0C2_48D5_B904_8B23A440FBF1__INCLUDED_)
    #define AFX_MAINFRM_H__FE74EB15_C0C2_48D5_B904_8B23A440FBF1__INCLUDED_

    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000

    #include "ChildView.h"

    class CMainFrame : public CFrameWnd
    {
    public:
    CMainFrame();
    protected: 
    DECLARE_DYNAMIC(CMainFrame)

    // Attributes
    public:

    // Operations
    public:

    // Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CMainFrame)
    virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
    virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
    //}}AFX_VIRTUAL

    // Implementation
    public:
    virtual ~CMainFrame();
    #ifdef _DEBUG
    virtual void AssertValid() const;
    virtual void Dump(CDumpContext& dc) const;
    #endif

    protected:  // control bar embedded members
    CStatusBar m_wndStatusBar;
    CToolBar m_wndToolBar;
    CChildView m_wndView;

    // Generated message map functions
    protected:
    //{{AFX_MSG(CMainFrame)
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
    afx_msg void OnSetFocus(CWnd *pOldWnd);
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
    };

    /////////////////////////////////////////////////////////////////////////////

    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

    #endif // !defined(AFX_MAINFRM_H__FE74EB15_C0C2_48D5_B904_8B23A440FBF1__INCLUDED_)


    // MainFrm.h : interface of the CMainFrame class
    //
    /////////////////////////////////////////////////////////////////////////////

    #if !defined(AFX_MAINFRM_H__FE74EB15_C0C2_48D5_B904_8B23A440FBF1__INCLUDED_)
    #define AFX_MAINFRM_H__FE74EB15_C0C2_48D5_B904_8B23A440FBF1__INCLUDED_

    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000

    #include "ChildView.h"

    class CMainFrame : public CFrameWnd
    {
    public:
    CMainFrame();
    protected: 
    DECLARE_DYNAMIC(CMainFrame)

    // Attributes
    public:

    // Operations
    public:

    // Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CMainFrame)
    virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
    virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
    //}}AFX_VIRTUAL

    // Implementation
    public:
    virtual ~CMainFrame();
    #ifdef _DEBUG
    virtual void AssertValid() const;
    virtual void Dump(CDumpContext& dc) const;
    #endif

    protected:  // control bar embedded members
    CStatusBar m_wndStatusBar;
    CToolBar m_wndToolBar;
    CChildView m_wndView;

    // Generated message map functions
    protected:
    //{{AFX_MSG(CMainFrame)
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
    afx_msg void OnSetFocus(CWnd *pOldWnd);
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
    };

    /////////////////////////////////////////////////////////////////////////////

    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

    #endif // !defined(AFX_MAINFRM_H__FE74EB15_C0C2_48D5_B904_8B23A440FBF1__INCLUDED_)


    2009年9月22日 11:37
  • VCのClassViewをみるのですが そこには CViewがないのです。
    CViewがないとだめでしょうか( むずかしいでしょうか
    すみません、確認が足りなかったのですが、ドキュメント/ビュー アーキテクチャをサポートしないタイプの MFC アプリケーションプロジェクトであれば、確かに CChildView は CWnd から直接派生しており、CView は関連しませんね。
    CView からの派生クラスであれば、CScrollView から派生するようにする等、簡単にできた可能性はあります。

    CWnd から直接派生せず、CScrollView から派生するようにすることもできるかもしれませんが、細かくは調査していません。
    (もしかしたら、色々と罠があるかもしれません)


    ところで、周りに相談できる人はいないのでしょうか?
    「そのScrollWindowというのが いれるにはどうするのでしょうか?」という質問に一度答えることはできるかもしれませんが、その後も同じように質問されていてはなかなか進みません。
    MFC プログラミングを学んでいける環境(相談できる人等)、資料(書籍、サイト等)が整っていないと、続けていくのはしんどいかもしれません。

    # さらに言うと、「VC6 で」という条件についてこれる人はかなり少数
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月22日 13:20
    モデレータ
  • ありがとうございます。
    はい ひとりで (他のアンプルを見よう見まねで用いたり、数年前 別の掲示板(? あったのですが、今回改良する段になって どこかみつからなく ここを頼っています)で 叱咤激励されながら やっとこさで作ったものを改良しています。
    すみません 化石のバージョンで。 今の小生には新版の入手はむずかしく。

    CView から派生したクラスでは、メッセージ マップに登録されたメンバ関数 OnHScroll と OnVScroll をオーバーライドすると、標準スクロールを直接扱うことができます。CScrollView は CView の機能に次の機能を追加します。

    とあるから だめかな

    2009年9月22日 14:36
  • すみません 化石のバージョンで。 今の小生には新版の入手はむずかしく。
    古い環境でないといけないという強い理由がない限り、移行する算段をつけることをお薦めしておきます。
    (買うことができない何らかの事情があったとしても、メンテナンスされていない古いバージョンを使い続けることは今後何らかの問題を引き起こすリスクを抱え込むことになる。すぐにできなくても、将来的には何らかの対応を取る方が望ましい)
    CView から派生したクラスでは、メッセージ マップに登録されたメンバ関数 OnHScroll と OnVScroll をオーバーライドすると、標準スクロールを直接扱うことができます。CScrollView は CView の機能に次の機能を追加します。
    とあるから だめかな
    なぜそう判断したのかの説明がないので何とも言えません。


    別スレッドの方でも書きましたが、こちらのスレッドも同様です。
    > 正直なところ、フォーラムベースで事細かに教えることはできません。
    > 23 日で連休も終わりますし、その後もこの調子だと、私は回答できませんのであしからずご了承下さい。

    # 平日はじっくりと対応する余裕がないこと、週末はそこまで回答活動に時間を割いていないことが理由です。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月22日 15:23
    モデレータ
  • どーも、PATIOです。

    静観していましたが、
    今のやり方では効率が悪いと思いますし、下手をすると間違った理解のまま進んでしまうのではないかと
    感じましたので余計なお世話かもしれませんが、書き込んで見ます。
    どうしても納得がいかないと言う話なら強要する気は有りませんのであしからず。

    質問内容や受け答えの内容を見ているとC++言語その物の知識が足りないと思います。
    VC++でMFCを使ってアプリケーションを作成する場合、C++言語の文法に関する知識と
    オブジェクト指向に関する知識(クラスとか派生とかそういった知識)は必須になります。
    これがないままコーディングのパターンだけを追いかけても多分本当の意味で理解出来た状態には
    ならないと思います。これは基礎として必要な知識は欠けている為です。

    VC++でMFCを使ってアプリケーションを作成する場合、
    Windowsの仕組みに関する知識(イベントドリブンの理解とOS上でどのようなイベントが起こるのか)が
    必要になりますし、それをうまくハンドリングする為にMFCがどのようなフレームワークを提供しているか
    を理解する必要があります。
    ですが、これらを理解し、使いこなす上でC++言語の知識はどうしても必要なものです。
    ですから、少なくともウインドウを表示しないコンソールプログラム上で自作のクラスを作成し、
    それを使いこなしてコンソール上で動作するアプリケーションを作成できる程度の知識は必要です。
    これを学習する為にはVC++の入門書ではなく、C++言語の入門書が必要です。
    私としては、いきなりウインドウが表示されるようなアプリではなく、コンソールアプリ(ウインドウが表示されない物)で
    C++言語の勉強をちゃんとやった方がかえって早道になると思っています。
    その上でWindowsの仕組みの勉強やMFCの使い方の勉強を進めるのがベストだと思います。

    Azuleanさんも書かれていますが、こういった掲示板で一から習うのは事実上無理です。
    掲示板はあらかたの知識がある状態でピンポイントを質問して解決するのには向いていますが、
    一から系統立てて習うには向いていません。
    系統立てて勉強するのでしたら、入門書を用意して勉強されることをお勧めします。
    入門書の中で分からない部分をひとつずつ解決すると言うのであれば、
    掲示板でも何とかなるかもしれません。
    にしても、基礎的な知識が無いのではその部分から説明しなくてはいけなくなるので
    掲示板で勉強しようと言うのは無理があると思いますけれど。

    書き込んでいる人も常時ここを見ているわけでは有りませんし、
    すばやいレスポンスを期待されても困るという部分もありますね。

    追記:
    開発環境に関してもAzuleanさんと同意見です。
    VC++6.0既にサポートが終わった環境なのでVC++6.0向けのサンプルを探すのも一苦労だと思います。
    書籍に関しても古い環境の書籍を探すのは結構大変でしょうし、Web上の情報も徐々に減って行く事になります。
    また、それとは別の問題としてVC++6.0のコンパイラはC++言語の規格への準拠率が低く、最新のコンパイラでは
    OKな記述がNGになるなど昔のソフトのメンテナンス以外に使うのはかなりリスクが大きくなっています。
    目的が良く分からないので何ともですが、
    勉強の為にされているのでしたらまずはC++言語をVC++2008ExpressEditionを使って
    コンソールプログラムで勉強された方が良いと思います。
    その上でMFCを使いたいならStandardEdition以上の環境の購入を考えるかですね。
    確か、ExpressEditionを持っていれば、アップグレード版が使えたと思いますし。(幾ばくかは安くなります)
    あと、VC++でMFCを使ってプログラムを作成する事が目標なのか、Windowsアプリが作成できれば良いのか
    によっても話は変わってきます。
    VC++に拘る必要が無いのであれば、VC#ならExpressEditionでも一通りの事はできるので選択肢としては
    ありなのではないかと思います。

    あと気になったのが、ベースにしているアプリケーションです。
    ベースにしているアプリケーションに関してご自分で作成なさったとして
    全てのコードに関してきちんと理解された上でコーディングされたのでしょうか?
    ベースのアプリケーションの実装に問題がある場合、それを生かす為に益々歪んだ実装になる事も考えられます。
    ベースにしているアプリケーションその物に不安要素があるのであれば、
    アプリとしての仕様だけを生かして組みなおした方が良い物ができるケースもあると思うので
    一考された方が良いと思いますよ。

    解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。
    2009年9月25日 3:04
  • ありがとうございます。おっしゃることは理解はしているつもりです。
    無理でもできないかと あせっている状態です。
    2008をInstallしてみるつもりです。


    2009年9月26日 7:45
  • 無理でもできないかと あせっている状態です。
    2008をInstallしてみるつもりです。
    無理矢理実現したものは遠からず崩壊します。
    時間的な猶予があるのであれば、きちんと現状を理解し、適切な変更を加えるという順序で進めるべきです。

    なお、Visual C++ 2008 Express Edition には MFC がありません。
    現在のプロジェクトをそのまま読み込んでもまず、コンパイルできませんので、一度手元のソースを捨てる覚悟を持って下さい。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月26日 12:08
    モデレータ
  • こんにちは、フォーラムオペレーターの高橋春樹です。

    Azuleanさん、Atsushi777さん、PATIOさん
    いつもお世話になっております。
    沢山のアドバイスありがとうございました。

    Shonan Hannyaさん
    MSDNフォーラムのご利用ありがとうございます。

    今回皆様から沢山のご意見、アドバイスを頂いたので、皆様からの投稿に、回答マークを付けさせて頂きました。
    不適切と思いましたら、回答マークを削除することも可能です。

    今後ともMSDNフォーラムをよろしくお願いします(^_^)


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2009年12月22日 1:02