在 MFC(Microsoft Foundation Classes)中,CFrameWnd 类的 OnSetPreviewMode 方法通常用于设置或取消设置预览模式。预览模式是指在打印预览中显示文档或视图的模式。

以下是该方法的声明:
afx_msg BOOL OnSetPreviewMode(BOOL bPreview, CPrintPreviewState* pState = NULL);

该方法接受两个参数:

  •  bPreview:一个布尔值,指示是否设置为预览模式。如果为 TRUE,则设置为预览模式;如果为 FALSE,则取消设置为预览模式。

  •  pState:一个指向 CPrintPreviewState 对象的指针,用于存储打印预览状态信息。


使用示例:
class CMyFrameWnd : public CFrameWnd
{
public:
    // 其他成员函数和声明...

    afx_msg void OnFilePrintPreview()
    {
        CPrintPreviewState* pState = new CPrintPreviewState;

        if (DoPrintPreview(IDD_PREVIEW, this, RUNTIME_CLASS(CMyPrintPreviewView), pState))
        {
            // 打印预览模式已经启动,pState 中存储了相关的打印预览状态
        }
        else
        {
            // 打印预览模式启动失败,执行其他操作
            delete pState;
        }
    }
    
    afx_msg void OnClosePrintPreview()
    {
        if (m_pPreviewState != NULL)
        {
            OnSetPreviewMode(FALSE, m_pPreviewState);
            delete m_pPreviewState;
            m_pPreviewState = NULL;
        }
    }
    
private:
    CPrintPreviewState* m_pPreviewState;
};

BEGIN_MESSAGE_MAP(CMyFrameWnd, CFrameWnd)
    // 其他消息映射...
    ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CMyFrameWnd::OnFilePrintPreview)
    ON_COMMAND(ID_FILE_CLOSE_PRINT_PREVIEW, &CMyFrameWnd::OnClosePrintPreview)
    ON_COMMAND_RANGE(ID_FILE_PRINT, ID_FILE_PRINT_DIRECT, &CMyFrameWnd::OnFilePrint)
    // 其他消息映射...
END_MESSAGE_MAP()

afx_msg void CMyFrameWnd::OnSetPreviewMode(BOOL bPreview, CPrintPreviewState* pState)
{
    // 在设置或取消设置预览模式时调用
    if (bPreview)
    {
        // 设置为预览模式
        m_pPreviewState = pState; // 保存预览模式的状态信息
        // 执行其他预览模式相关的操作...
    }
    else
    {
        // 取消设置为预览模式
        m_pPreviewState = NULL; // 清空预览模式的状态信息
        // 执行其他取消预览模式相关的操作...
    }
}

在上述示例中,OnSetPreviewMode 方法被用于设置或取消设置预览模式。当打开打印预览时,可以调用 OnSetPreviewMode(TRUE, pState),并在关闭打印预览时调用 OnSetPreviewMode(FALSE, pState)。这允许在设置或取消设置预览模式时执行相关的操作。


转载请注明出处:http://www.zyzy.cn/article/detail/17886/MFC/CFrameWnd