MFCGridCtrl的使用方法

http://www.codeproject.com/KB/miscctrl/gridctrl.aspx下载Keith Rule的源码,包括他的实例源码

1、新建基于Dialog的MFC工程GridCtrlTest
2、 GridCtrl.cpp GridCtrl.h 等文件加到工程中,并编译
我添加GridCtrl_src下文件后,VS2010编译报错:
gridctrltest\memdc.h(26): error C2011: “CMemDC”:“class”类型重定义
我认为微软已经实现了他们自己的CMemDC 类库,所以使用Keith Rule到memory DC库会报重定义错误。
   解决办法重命名CMemDC为GCMemDC,记得同时修改MemDC.h及 GridCtrl.cpp所有用到的CMemDC项。
编译通过。
3、在对话框CGridCtrlTestDlg中增加Custom Control,就是工具箱中的人头像
并设置Custom Control的属性:
注意:Class项的值一定要是MFCGridCtrl,不然就无法将控件关联起来。
4、在文件GridCtrlTestDlg.h为类CGridCtrlTestDlg增加成员
#pragma once
#include "GridCtrl.h"
// CGridCtrlTestDlg 对话框
class CGridCtrlTestDlg : public CDialogEx
{
// 构造
public:
CGridCtrlTestDlg(CWnd* pParent = NULL); // 标准构造函数
    CGridCtrl m_pGrid;
    void GridCtrlInit();
// 对话框数据
enum { IDD = IDD_GRIDCTRLTEST_DIALOG };
5、在GridCtrlTestDlg.cpp文件里的函数DoDataExchange增加映射:
void CGridCtrlTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_GridControl(pDX, IDC_MY_GRIDCTRL, m_pGrid);
}
6、让控件显示起来,在OnInitDialog函数里初始化GridCtrl
BOOL CGridCtrltest2Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
//  执行此操作
SetIcon(m_hIcon, TRUE);   // 设置大图标
SetIcon(m_hIcon, FALSE);  // 设置小图标
// TODO: 在此添加额外的初始化代码
GridCtrlInit();
return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
文件最后添加GridCtrlInit()实现函数
void CGridCtrltest2Dlg::GridCtrlInit()
{
    m_pGrid.SetEditable(true);
    m_pGrid.SetTextBkColor(RGB(0xFF, 0xFF, 0xE0));//黄色背景
    m_pGrid.SetRowCount(8); //初始为10行
    m_pGrid.SetColumnCount(8); //初始化为11列
    m_pGrid.SetFixedRowCount(1); //表头为一行
    m_pGrid.SetFixedColumnCount(1); //表头为一列
    for (int row = 0; row < m_pGrid.GetRowCount(); row++)
    for (int col = 0; col < m_pGrid.GetColumnCount(); col++)
    {
        //设置表格显示属性
        GV_ITEM Item;
        Item.mask = GVIF_TEXT|GVIF_FORMAT;
        Item.row = row;
        Item.col = col;
        m_pGrid.SetRowHeight(row,25); //设置各行高         
        m_pGrid.SetColumnWidth(0,64); //设置0列宽
        m_pGrid.SetColumnWidth(col,64); //设置各列宽
        if(row==0&&col==0) //第(0,0)格
        {
            Item.nFormat = DT_CENTER|DT_WORDBREAK;
            Item.strText.Format(_T("报表显示"),col);
        }
        else if (row < 1) //设置0行表头显示
        {       
            Item.nFormat = DT_CENTER|DT_WORDBREAK;
            Item.strText.Format(_T(" 项目%d"),col);
        }
        else if (col < 1) //设置0列表头显示
        {
            if(row< m_pGrid.GetRowCount())
            {
                Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;
                Item.strText.Format(_T("第%d次"),row);
            }
        }
        else
        {
            Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;
            Item.strText.Format(_T(""),2);
        }
        m_pGrid.SetItem(&Item);
    }
}
运行结果效果如下:
 
  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
MFCGridCtrl是一个在MFC应用程序中使用的自定义控件,它用于创建和管理类似于Excel表格的网格视图。在使用MFCGridCtrl之前需要完成注册的步骤。 首先,确保已经将MFCGridCtrl控件的头文件(GridCtrl.h)和源文件(GridCtrl.cpp)添加到您的项目中。 接下来,打开您的MFC应用程序的资源.rc文件,并在文件中找到IDD_MAIN_DIALOG(或您所使用的对话框标识符)。然后,将下面的代码添加到该对话框的资源中: ``` #include "GridCtrl.h" IDD_MAIN_DIALOG DIALOGEX 0, 0, 320, 200 STYLE DS_SETFONT | DS_FIXEDSYS | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN ... CONTROL "",IDC_GRID_CTRL,"GridCtrl",WS_TABSTOP,15,167,296,88 ... END ``` 在代码中的CONTROL部分,我们使用"GridCtrl"作为控件的类名。这是我们之前添加的MFCGridCtrl控件的类名。 接下来,打开您的项目的对话框文件(比如MainDialog.h和MainDialog.cpp),并在头文件中添加以下代码: ``` #include "GridCtrl.h" class CMainDialog : public CDialogEx { ... GridCtrl m_GridCtrl; ... } ``` 在源文件中,您需要为GridCtrl控件进行初始化和添加所需的行和列。在OnInitDialog()的函数体中,添加以下代码: ``` BOOL CMainDialog::OnInitDialog() { ... m_GridCtrl.AttachGrid(GetDlgItem(IDC_GRID_CTRL)->GetSafeHwnd()); m_GridCtrl.SetRowCount(5); m_GridCtrl.SetColumnCount(3); m_GridCtrl.SetFixedRowCount(1); m_GridCtrl.SetFixedColumnCount(1); m_GridCtrl.EnableTitleTips(FALSE); ... } ``` 最后,在应用程序的InitInstance()函数中添加一行代码,将MFCGridCtrl控件注册到应用程序: ``` BOOL CYourApp::InitInstance() { ... CRuntimeClass* pGridCtrlClass = RUNTIME_CLASS(CGridCtrl); AfxRegisterClass(pGridCtrlClass); ... } ``` 通过以上步骤,您已经成功注册并在您的MFC应用程序中使用MFCGridCtrl控件了。可以根据您的具体需求,对GridCtrl控件进行更多的自定义和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值