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

  • 相关阅读:
    SQLServer两张表筛选相同数据和不同数据
    Js工具
    检测本地字节序 是大端存储还是小端存储
    C++ 一个统计文件夹下所有代码文件行数的小工具
    C++ 扫描文件夹下所有文件
    C++ 安全拼接字符串函数
    几个常见Win32 API函数
    C 数组模拟阶乘运算
    leetcode 2. Add Two Numbers
    Airline Hub
  • 原文地址:https://www.cnblogs.com/yeyeye123/p/11032307.html
Copyright © 2011-2022 走看看