zoukankan      html  css  js  c++  java
  • MFC程序实现窗口分割,视图快捷插入控件和插入列表

    将视图中插入列表:

    1.创建一个MFC应用程序,在MFC Wizard中,生成的类选项,如图

    2.选择CListView作为基类

    3.在CXXView.cpp(XX为你的程序名)重写虚函数OnInitialUpdate()。在函数中添加以下代码。

    GetListCtrl().ModifyStyle(0,LVS_REPORT|LVS_EDITLABELS);            //List-View Window Styles
    
        GetListCtrl().SetExtendedStyle(LVS_EX_GRIDLINES    |WS_VSCROLL |LVS_EX_FLATSB|LVS_EX_HEADERDRAGDROP);
    
        ////在视图中插入列
        int col=1;
        int row=0;
    
        int i;
        ////插入列
    
        
        for(i=1;i<=20;i++)
        {
            GetListCtrl().InsertColumn(col,_T("123"),LVCFMT_LEFT,70,-1);
            col++;
        }
        //插入行
        CString str;
        LVITEM lvi;
        for(i=1;i<=50;i++)
        {
            lvi.mask=LVIF_IMAGE|LVIF_TEXT;
    
            str.Format(_T("%d"),i);
            lvi.iItem=i;
            lvi.iSubItem=0;
    
            lvi.pszText=(LPTSTR)(LPCTSTR)str;
            lvi.iImage=i;
            GetListCtrl().InsertItem(&lvi);
    
        }

    编译运行程序便可在视图中得到表格。至于对表格的各种操作,这篇博客介绍的比较全面http://blog.csdn.net/zhgflx/article/details/6895204

    窗口分割的实现:

    在实现表格特征以后,我们想把视图空出一部分来插入控件或是利用于别的方面,这时我们就需要利用CSplitterWnd来将窗口分为两个或两个以上的视图。

    1.在CChildFrame类中重写OnCreatClient()函数(注:网上许多帖子都说是在CMainFrame中重写,但是我在运行的时候会触发断电,搬到CChildFrame后解决了这个问题。)。

    2.在CChildFrame类中添加变量 CSplitterWnd m_wndSplitter。

    3.添加一个新的视图类,命名为CDialogView,添加如下代码

    BOOL bCreateSpltr = m_wndSplitter.CreateStatic( this, 2, 1);
        // COneView and CAnotherView are user-defined views derived from CMDIView
        
        m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CDialogView), CSize(100,100),pContext);
        m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CtestnewView), CSize(0,0), pContext);
        return (bCreateSpltr);
        return CMDIChildWndEx::OnCreateClient(lpcs, pContext);

    即可将视图分为两个视图,切分条可拖动。如果想要固定切分条,和限制其拖动范围等等操作,具体见http://blog.csdn.net/netanimals/article/details/7496426

    视图快捷插入控件:

    有时候我们想要在视图中插入控件,一般都需要自己绘制,这样很麻烦。有没有什么更好的办法呢?这时候我们就需要用到CFormView,它可以使我们把视图当作对话框一样使用了。

    上一个功能实现中我们新建了一个类,在我们新建类的时候选基类为CFormView,生成后查看我们的资源视图dialog,发现多了一个IDD_DIALOGVIEW,这个dialog便是我们需要插入控件的视图。是不是方便许多了呢?

  • 相关阅读:
    BZOJ 2818 Gcd 线性欧拉筛(Eratosthenes银幕)
    simlescalar CPU模拟器源代码分析
    基于webRTC技术 音频和视频,IM解
    SVM明确的解释1__ 线性可分问题
    Atititjs javascript异常处理机制java异常转换.js exception process
    hibernate annotation 相关主键生成策略
    切向量,普通矢量,渐变
    C++动态数组简单的模拟二元堆
    [Angular] Create a custom validator for reactive forms in Angular
    [RxJS] Marbles Testings
  • 原文地址:https://www.cnblogs.com/jshan/p/3151519.html
Copyright © 2011-2022 走看看