zoukankan      html  css  js  c++  java
  • MFC进阶教程深入浅出版.笔记第5天

     

    平时也没机会接触到MFC的代码,这次也是项目使然,手上项目涉及到MFC,感觉有点意思,所以在b站找了视频学习,没有上手操作过,只是走马观花,大致了解了这个代码的流程,现在奉上b站的视频链接:MFC进阶教程深入浅出版
    以下是课程笔记:

    【根据向导创建单文档,在”用户界面功能”,取消”使用传统的停靠工具栏”】
    【重写】【数据库】

    一、静态拆分窗口:

     1)自定义两个类 CUserTreeView(继承于CTreeView,显示用户信息)、CMedicListView(继承于CListView,显示药品信息)
      a)类视图中,选中顶层文件夹 --> 右击 --> 添加类 --> MFC --> ……
     2)在框架类frame中做处理,使用 CSplitterWnd类实现拆分功能,.h中CSplitterWnd类定义对象
     3)在框架类frame中做处理,重写 OnCreateClient(),在其内部实现,把默认返回值屏蔽,人为返回TURE
      a) 窗口拆分((1行2列):CSplitterWnd::CreateStatic
      b) 创建视图:CSplitterWnd::CreateView
       1) CUserTreeView尺寸:CSize (230,600)
       2) CMedicListView尺寸:CSize (720,600)
     4)设置标题,在文档类 OnNewDocument()中:CDocument::SetTitle


    二、列表视图(显示药品信息)初始化

     1) CListView类简化了列表控件和CListCtrl的使用,它本身就包含一个列表控件
     2) CMedicListView .h文件定义一个CListCtrl类的对象指针
     3) CMedicListView 右击 --> 属性 --> 重写 --> OnInitialUpdate(),在OnInitialUpdate()中做初始化工作
      a)返回与视图关联的list控件:CListView::GetListCtrl
      b)设置列表模式:CWnd::ModifyStyle(0,LVS_REPORT);
      c)设置列表风格:CListCtrl::SetExtendedStyle
       pctrl->SetExtendedStyle(pctrl->GetExtendedStyle()|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
      d)插入表头:CListCtrl::InsertColumn
      e)根据数据库数据插入正文内容
       1)类视图中,选中顶层文件夹 --> 右击 --> 添加类 --> MFC --> MFC ODBC使用者 --> 数据源 --> 新建 --> ...-- --> 选择所需表……新类名字为CMedicSet
       2)在文档类中定义CMedicSet对象,方便后面处理
       3)获取文档类对象:CView::GetDocument
       4)如果没有打开记录集:CRecordset::IsOpen,打开记录集:CRecordset::Open
       4)查询后按行插入数据
        a)查询:CRecordset::Requery
        b)记录集中记录的数目:CRecordset::GetRecordCount
        c)第一个必须先插入新项:CListCtrl::InsertItem
        d)后面才能设置子项的文本:CListCtrl::SetItemText
          1)时间格式化成字符串 CTime::Format
          CTime time = pSet --> m_produceDate;
          CString str = time.Format(_T("%Y-%m-%d"));
        e)记录集指针向后移动:CRecordset::MoveNext
        

    三、树视图(显示用户信息)初始化

    1) CTreeView类简化了对tree控件和CTreeCtrl类的使用,它本身就包含一个tree控件
    2) CuserTreeview .h文件定义一个CTreeCtrl类的对象指针
    3) CUserTreeView类右击 --> 属性 --> 重写 --> OnInitialUpdate(),在OnInitialUpdate()中做初始化工作
     a)返回与视图关联的tree控件:CTreeView::GetTreeCtrl
       根据需要设置风格:m_treeCtrl.ModifyStyle(NULL, WS_VISIBLE | WS_TABSTOP | WS_CHILD | WS_BORDER | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES | TVS_DISABLEDRAGDROP);
     b)创建图像列表
      1) .h创建图表列表对象 CImageList
      2) 创建图像列表:CImageList:: Create
      3) 加载位图:CBitmap::LoadBitmap
      4) 图像列表追加图标:CImageList::Add,掩码颜色用黑色 RGB (0,0,0)
     c)树控件设置图形状态列表:CTreeCtrl::SetImageList
     d)初始化数据,数据从数据库中取
      1)类视图中,选中顶层文件夹 --> 右击 --> 添加类 --> MFC --> MFC ODBC使用者 -->  数据源 --> 新建 --> …… --> 选择所需表……新类名字为 CUserSet
      2)在文档类中定义 CUserSet 对象,方便后面处理
      3)获取文档类对象:CView::GetDocument
      4)如果没有打开记录集:CRecordset::IsOpen,打开记录集:CRecordset::Open
      5)过滤查询
       a)过滤:CRecordset::m_strFilter
       b)查询:CRecordset::Requery
       c)记录集中记录的数目:CRecordset::GetRecordCount
       d)记录集指针向后移动:CRecordset::MoveNext
      6)插入节点:CTreeCtrl::InsertItem

  • 相关阅读:
    古谚、评论与论断、名篇与名言
    重读《西游记》
    重读《西游记》
    命名之法 —— 时间、季节、地点
    命名之法 —— 时间、季节、地点
    文言的理解 —— 古时的称谓、别称、别名
    文言的理解 —— 古时的称谓、别称、别名
    Oracle GoldenGate for Oracle 11g to PostgreSQL 9.2.4 Configuration
    瀑布 敏捷 文档
    POJ 1325 ZOJ 1364 最小覆盖点集
  • 原文地址:https://www.cnblogs.com/yeyeye123/p/11032307.html
Copyright © 2011-2022 走看看