印刷プレビューのツールバーのカスタマイズ

[戻る]
FAY 2002/12/12(木) 13:06:25
印刷プレビューのときに画面上部に表示される
ボタンが並んだツールバーをカスタマイズ
(具体的にはボタンを追加)するには
どうしたらいいのでしょうか。

プレビュー時に表示されるツールバーのコントロールIDが
AFX_IDD_PREVIEW_TOOLBAR らしいというところまでは
分かったのですが、そこで詰まってしまいました。

どなたかご存知でしたら、どうぞご教授ください。

環境はWindows2000 VC6.0 SP5 のMFC(dll)です。

tib 2002/12/12(木) 13:35:21
コントロールIDが解っているのなら、GetDescendantWindow()が使えると思います。

sara 2002/12/12(木) 14:07:34
下記が参考になると思います。
http://www.microsoft.com/japan/developer/library/vcmfc/_mfcnotes_tn030.htm

FAY 2002/12/13(金) 15:13:46
[[解決]]
tibさん、saraさん、回答ありがとうございました。

はじめにtibさんがおっしゃっている方法でやってみたのですが、
GetDescendantWindow()ではダイアログバーを取得することは出来ませんでした。
(NULLが戻り地として帰ってきます。)

次にsaraさんに教えていただいたページをMSDN内で見つけ、それを参考にして
OnFilePrintPreview() のインプリメントを自分で書き、
そのインプリメントの中で読んでいるDoPrintPreview()関数に
自作のダイアログバーのIDを引数として渡すことでそれを
プレビュー時のツールバーとして表示することが出来ました。
(ただ、既存の各ボタンにはデフォルトのIDを
リソースエディタで設定してあげなければならないのですが。
(たとえば印刷ボタンにはAFX_ID_PREVIEW_PRINTなど))

実際は以下のような感じです。
void CMyView::OnFilePrintPreview()
{
    CPrintPreviewState* pState = new CPrintPreviewState;

    //AFX_IDD_PREVIEW_TOOLBARのかわりに自作のIDD_MY_PREVIEW_TOOLBARを渡す。
    //if (!DoPrintPreview(AFX_IDD_PREVIEW_TOOLBAR, this,
    //            RUNTIME_CLASS(CPreviewView), pState))
    if (!DoPrintPreview(IDD_MY_PREVIEW_TOOLBAR, this,
                RUNTIME_CLASS(CPreviewView), pState))
    {
        TRACE0("Error: DoPrintPreview failed");
        AfxMessageBox(AFX_IDP_COMMAND_FAILURE);
        delete pState;    
  }

  //これをやらない
    //CView::OnFilePrintPreview();
}

どうもありがとうございました。

古いスレッドには追加発言できません。