ZBLOG

CBCGPGridPage Grid and Report » General Classes Detailed Description The CBCGPGridPage class is used by Grid Control to store print pages. A print page specifies which area of Grid Control is being printed on the specified page. Grid Control count...

以下是一个简单的示例代码,演示如何使用CBCGPGridCtrl创建一个表格控件,并自定义分页和打印设置:

#include <afxwin.h>
#include <BCGPGridCtrl.h>

class CMyGridCtrl : public CBCGPGridCtrl
{
public:
    virtual void OnCalcPrintPages(CDC* pDC, CPrintInfo* pInfo) override
    {
        // 自定义打印页面的边距和表头设置
        // 这里可以根据需要进行具体的定制

        CBCGPGridCtrl::OnCalcPrintPages(pDC, pInfo);
    }

    virtual void CalcPages(CRect& rectPages, CSize sizeGrid) override
    {
        // 自定义网格控件的分页设置
        // 这里可以根据需要进行具体的定制

        CBCGPGridCtrl::CalcPages(rectPages, sizeGrid);
    }

    virtual BOOL OnAddGridPageRowForPrint(int nStartColumn, int nEndColumn, 
                                          int nStartOffsetInPixels, int nWidthInPixels,
                                          int nFirstRowOnPage, int nLastRowOnPage,
                                          const CBCGPGridItemID& idPage) override
    {
        // 自定义网格控件在打印时,将水平行分割为多个页面的方式
        // 默认情况下,按像素分割行,也可以按列进行分割

        return CBCGPGridCtrl::OnAddGridPageRowForPrint(nStartColumn, nEndColumn,
                                                      nStartOffsetInPixels, nWidthInPixels,
                                                      nFirstRowOnPage, nLastRowOnPage,
                                                      idPage);
    }
};

int main()
{
    AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), SW_SHOWDEFAULT); // 初始化MFC

    CFrameWnd frame;
    if (!frame.Create(NULL, _T("Grid Control Demo")))
        return -1;

    CMyGridCtrl grid;
    grid.EnableVirtualMode();
    grid.SetEditable(TRUE);

    // 添加列
    grid.InsertColumn(0, _T("Name"), 100);
    grid.InsertColumn(1, _T("Age"), 50);

    // 添加行数据
    int nRow = grid.AddRow();
    grid.SetItemText(nRow, 0, _T("John"));
    grid.SetItemText(nRow, 1, _T("30"));

    nRow = grid.AddRow();
    grid.SetItemText(nRow, 0, _T("Alice"));
    grid.SetItemText(nRow, 1, _T("25"));

    frame.ShowWindow(SW_SHOW);
    
     // 打印预览
     CPrintPreviewState* pState = new CPrintPreviewState;
     pState->m_pToolBar = NULL; // 不显示打印预览工具栏

     CPrintPreviewView* pView = (CPrintPreviewView*)RUNTIME_CLASS(CPreviewView)->CreateObject();
     if (pView->CreatePrintPreview(&frame,
                                  &grid,
                                  RUNTIME_CLASS(CMyPrintPreview),
                                  AFX_ID_PREVIEW_PRINT,
                                  AFX_ID_PREVIEW_NUMPAGE,
                                  pState))
     {
         pView->SetZoomState(MAKELPARAM(-2 /*5%*/, -2 /*5%*/));
         frame.SetActiveView(pView);
         frame.UpdateWindow();

         pView->ShowWindow(SW_SHOWMAXIMIZED);
         pView->OnFilePrintPreview();
     }

     return 0;
}

上述代码是一个简化的示例,演示了如何使用CBCGPGridCtrl创建一个带有自定义打印和分页设置的表格控件。实际使用时,您可能需要根据自己的需求进行进一步的定制和处理。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=4280

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?