平时也没机会接触到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