MFC操作word获取当前页的页码

qq_15849363 2017-06-06 05:21:14
COleVariant covZero((short)0),covTrue((short)TRUE);
wd.m_wdView.SetSeekView(10); // wdSeekCurrentPageFooter=10
wd.m_wdParagraphFormat=wd.m_wdSel.GetParagraphFormat();
wd.m_wdParagraphFormat.SetAlignment(pFrame->m_dlgPrintSet.m_printInfo.m_PagenumPosition);
// 添加页码
if (pFrame->m_dlgPrintSet.m_printInfo.m_PagenumType == 0)
{
wd.m_wdSel.TypeText(LPCTSTR(_T(" ")));
}
else if (pFrame->m_dlgPrintSet.m_printInfo.m_PagenumType == 1)
{
wd.m_wdSel.TypeText(LPCTSTR(_T("..")));
}
else if (pFrame->m_dlgPrintSet.m_printInfo.m_PagenumType == 2)
{
wd.m_wdSel.TypeText(LPCTSTR(_T("--")));
}
else if (pFrame->m_dlgPrintSet.m_printInfo.m_PagenumType == 3)
{
wd.m_wdSel.TypeText(LPCTSTR(_T("第页")));
}
else if (pFrame->m_dlgPrintSet.m_printInfo.m_PagenumType == 4)
{
wd.m_wdSel.TypeText(LPCTSTR(_T("第页 共页")));
}

if (pFrame->m_dlgPrintSet.m_printInfo.m_PagenumType != 4)
{
wd.m_wdSel.MoveLeft( COleVariant((short)1), COleVariant((short)1), &covZero );
}
else if (pFrame->m_dlgPrintSet.m_printInfo.m_PagenumType == 4)
{
wd.m_wdSel.MoveLeft( COleVariant((short)1), COleVariant((short)4), &covZero );
}

wd.m_wdFields = wd.m_wdSel.GetFields();
// 增加页码域,当前页码
int i = wd.m_wdFields.GetCount();
wd.m_wdFields.Add( wd.m_wdSel.GetRange(), COleVariant((short)33), COleVariant(_T("PAGE ")), &covTrue );

if (pFrame->m_dlgPrintSet.m_printInfo.m_PagenumType == 4)
{
wd.m_wdSel.MoveRight( COleVariant((short)1), COleVariant((short)3), &covZero);
//增加页码域,总页数
wd.m_wdFields.Add( wd.m_wdSel.GetRange(), COleVariant((short)26), COleVariant(_T("NUMPAGES ")), &covTrue ); // 增加页码域,总页数
}
wd.m_wdView.SetSeekView(0); // 关闭页眉页脚,wdSeekMainDocument=0,回到主控文档
...全文
548 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
clever101 2021-03-25
  • 打赏
  • 举报
回复
找到了一种方法,代码如下:

// sel变量为Selection类型
long inType = 3;
VARIANT varTest = (sel.GetInformation(inType));
int curPage = varTest.intVal;
参考文献: C#怎么获取Word页码 WdInformation Enum
clever101 2021-03-25
  • 打赏
  • 举报
回复
多谢楼主,正要用到这段代码。问一下,m_wdView是什么类型呢?
zgl7903 2017-06-07
  • 打赏
  • 举报
回复
这是经验分享么?

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧