博客园丁

我是博客园的一丁,我会永不停顿,不停创新。
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

打印预览中工具栏的定制问题

Posted on 2007-04-25 22:58  Jason.Jiang  阅读(1349)  评论(1编辑  收藏  举报
打印预览工具栏中的定制问题主要包括:
1、中英互译。
2、用图标按钮代替字符按钮。

本文首先说明第一种情况,第二种情况会在以后介绍。

步骤:
1、生成一个继承自CPreviewView类的CMyPreviewView类。
2、重载两个消息处理函数OnActivateView() 和 OnUpdateNumPageChange()。
作者在实际开发过程中,以为只要重载第一个函数就好了,但是那样不能改变NumPage(两页、一页按钮)按钮的外观,因为在OnActiveView之后实际上又调用了CPreviewView类的OnUpdateNumPageChange()函数,而CPreviewView类的OnUpdateNumPageChange()函数会把在OnActivateView中对NumPage修改的外观重置。
3、为了让按钮按照实际情况进行更新(当放大按钮放到最大,放大按钮变灰等)。

对应代码:
1、CMyPreviewView::OnActivateView(BOOL bActivate, CView*, CView*)
    {
       if(bActivate)
       {
             if(m_pToolBar)
             {
                    m_pToolBar->SetDlgItemText(AFX_ID_PREVIEW_PRINT, _T("打印(&P)") ;
                   //设置另外几个按钮
               
            }
        }
    }
2、
void MyPreviewView::OnUpdateNumPageChange(CCmdUI* pCmdUI)
{
CPreviewView::OnUpdateNumPageChange(pCmdUI);

UINT nPages = (m_nZoomState == ZOOM_OUT ? m_nPages : m_nZoomOutPages);
if (nPages == 1)
pCmdUI->SetText(_T("两页(&T)");
else
    pCmdUI->SetText(_T("一页(&O)");
}

3、
void CMyPreviewView::OnDraw(CDC* pDC)
{
CPreviewView::OnDraw(pDC);
m_pToolBar->PostMessage(WM_IDLEUPDATECMDUI,(WPARAM) TRUE) ;
}
参考文献:
Localizing print preview
http://www.codeproject.com/printing/EbPrintPreviewTest.asp