ページの表示切替の方法

解決


くるり  2006-02-27 14:20:24  No: 60829  IP: [192.*.*.*]

初めて利用させていただきます。くるりというものです。
プログラマー暦半年の初心者ですが、自営業で小料理屋をしている母のために簡単な従業員の給料計算システムを作っています。

SDI形式のプログラムでメニューから選んだページに表示を切替えさせる方法を教えて下さい。
ページは全てCFormViewクラスで生成しています。
(余談ですがこの周りの方法は全くわからないので、今は大元のソースで

    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
        IDR_MAINFRAME,
        RUNTIME_CLASS(CKyuryoCalcDoc),
        RUNTIME_CLASS(CMainFrame),    // メイン SDI フレーム ウィンドウ
        RUNTIME_CLASS(CKyuryoCalcView));  ------①
    if (!pDocTemplate)
        return FALSE;
    AddDocTemplate(pDocTemplate);

上記の①の部分をテストしたいページのクラス名に変えて各ページのテストを行っている有り様です。。。)

あと、これはついでですが、ツールバーにコンボボックスを追加する方法も教えていただけると嬉しいです。

使っているOSはWindowsXPで、ソフトは.NET2003です。

編集 削除
dairygoods  2006-02-27 15:43:24  No: 60830  IP: [192.*.*.*]

[VC50] 複数のビューを切り替え表示する SDI サンプル
http://support.microsoft.com/default.aspx?scid=kb;ja;JP141334

> あと、これはついでですが、ツールバーにコンボボックスを追加する方法も教えていただけると嬉しいです。

こちらについては、詳しくないですが、
ダイアログバーとかを使うのかも。

編集 削除
くるり  2006-02-28 14:30:08  No: 60831  IP: [192.*.*.*]

ありがとうございます。
教えていただいたサイトですが、いまいちよくわかりませんでした。
サンプルコードの
        CView* pNewView = m_pViews[nIndex];
この部分ですが、m_pViews[nIndex]には何が入るのでしょうか?

編集 削除
dairygoods  2006-02-28 16:46:28  No: 60832  IP: [192.*.*.*]

> この部分ですが、m_pViews[nIndex]には何が入るのでしょうか?

表示したいViewへのポインタです。

同ページに全てのファイルを納めたファイルが置いてありますが、
それをご覧になった上での質問でしょうか?

編集 削除
くるり  2006-03-01 15:29:42  No: 60833  IP: [192.*.*.*]

ごめんなさい。ちゃんと見ていませんでした。。。すみませんでした。
載っていた方法と同じようにプログラムを作ってみたのですが、

    CView*  m_pViews[3];                            (.h)

    m_pViews[0] = (CView*) new CKyuryoCalc;     (.cpp)

次のようなエラーが出てきました。原因として何が考えられますか?

error C2248: 'CKyuryoCalc::CKyuryoCalc' : protected メンバ (クラス 'CKyuryoCalc' で宣言されている)にアクセスできません。

編集 削除
επιστημη  2006-03-01 15:45:59  No: 60834  IP: [192.*.*.*]

エラー・メッセージの通り。
「コンストラクタが(protectedなので)呼べない」
と言うてます。

編集 削除
くるり  2006-03-01 16:27:08  No: 60835  IP: [192.*.*.*]

そして私の旅は「コンストラクタとは何だーー!?」から再出発し、
ヘルプを参照しても意味がよくわからず、
とりあえずヘッダーのprotected記述を全てpublicに変えてみるという
かなり邪道な方法でどの部分がコンストラクタを意味するかを割り出すことに成功しました。

ご指導ありがとうございました。

編集 削除
dairygoods  2006-03-02 14:00:05  No: 60836  IP: [192.*.*.*]

落ち着いてサンプルをよく見ましょう。
FORM1.Hの先頭は、次のようになってます。

class CForm1 : public CFormView
{
    DECLARE_DYNCREATE(CForm1)
public:
    // Need these public for view switching and initialization
    CForm1();            
    virtual ~CForm1();

編集 削除