博客园丁

我是博客园的一丁,我会永不停顿,不停创新。
posts - 99, comments - 119, trackbacks - 21, articles - 22
   :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

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

Posted on 2007-04-25 22:58 Jason.Jiang 阅读(216) 评论(0)  编辑 收藏 网摘 所属分类: VC
打印预览工具栏中的定制问题主要包括:
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

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-04-25 23:00 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: