印刷プレビューのときに画面上部に表示される
ボタンが並んだツールバーをカスタマイズ
(具体的にはボタンを追加)するには
どうしたらいいのでしょうか。
プレビュー時に表示されるツールバーのコントロールIDが
AFX_IDD_PREVIEW_TOOLBAR らしいというところまでは
分かったのですが、そこで詰まってしまいました。
どなたかご存知でしたら、どうぞご教授ください。
環境はWindows2000 VC6.0 SP5 のMFC(dll)です。
コントロールIDが解っているのなら、GetDescendantWindow()が使えると思います。
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();
}
どうもありがとうございました。