PoEdu - Windows阶段班 【Po学校】-Lesson04_项目开始_阶段学习重点
PoEdu-Windows编程-Lesson04_项目开始_阶段学习重点
- 一个标准的库存管理需求
- 商品信息
- 入库
- 出库
- 领用
- 调拨
- 涉及多点通信 在一台PC上不可行。
- 盘点
- 退货
- 调价
- 项目只写3项需求:
- 1 商品信息
- 2 入库
- 3 出库
- 出库只做“领用”
- 用MFC来进行开发,简单剖析MFC
- MFC 可以看成是一个一个的类组成,与C++十分切合的,可以帮我们封装,帮我们分类
- MFC不支持纯C编译器
- 开发工具用VS2015,一个公司出品,无缝兼容
- 重点:程序员的自学能力
- 1 快速查询MSDN 能力
- 2 阅读文档的能力
- 3 动手调试的能力
- 界面制作
- 注意点1
- 子类的对象 与 子类的一个指针(由指向父类的指针转换得到) 两者本质相同
- 因为有继承关系,所以能把父类(基类)的指针转换为子类(派生类)的指针
- 注意点2
- CListCtrl插入元素函数 返回SendMessage()的值 2种方式:
- 1 int InsertColumn( int nCol, const LVCOLUMN* pColumn);
- LVCOLUMN - Win32中一个结构体对象,包含第2种方式的3个参数,本质上这两种参数是一致的。控件之间用SendMessage()来进行交互。
- 2 int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormmat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1);
- int nCol, 列的索引
- LPCTSTR lpszColumnHending, 包含列标题的字符串的地址
- int nFormat = LVCFMT_LEFT, 指定列的对齐方式的整数。 它可以是以下值之一: LVCFMT_LEFT、 LVCFMT_RIGHT或 LVCFMT_CENTER。
- nWidth 列的宽度,以像素为单位。 如果此参数是-1,列宽未设置。
- nSubItem 子项的索引与列。 如果此参数是-1,子项不与列出。
- 注意点3 MFC中的_T,这个宏在MFC中取代了win32中的_TEXT(X)宏
- 注意点4 LVCFMT缩写代表:
- FMT - Format 格式化
- LVC - ListViewControl 列表视图控件
- 注意点5 插入列InsertColumn正确宽度设置:
- 插入列InsertColumn正确宽度设置
- 设置一个矩形类,用GetWindowsRect(&rect)得出一个矩形数据
- 宽度用矩形对象点出成员函数 :宽度 rect.Width()
- 注意点6 CRect 矩形类的使用,查看MSDN
- 注意点7 ListControl控件的插入列操作,不是一个初始化(只初始操作一次)的操作,以后还会被其它动作,如:窗口大小改变,插入列,删除列,等等操作来调用它。所以,插入列InsertColumn系列操作应该封装成一个函数。
- 注意点8 SetExtendedStyle() 设置扩展的样式风格
- 如何快速查看MSDN中有哪些样式和风格
- 在Vs2015中,点选对象,右键找到申明,点选前面的申明类,F1打开MSDN,跳转MSDN
- Ctrl + F 查找 “Style" , 再下翻找到 SetExtendedStyle(),点开
- 在SetExtendedStyle()页面“参数”中,点开 "Windows SDK的 扩展列表视图样式",就找到了“EXtended List-View Styles”
- 这里就有很多的样式风格,以“LVS_EX_”为前缀,L - List, V - View ,S - Styles EX - EXtended
- 注意点9 LVS_EX_GRIDLINES 带有网格线的样式
- 注意点10 如果ListCtrl没有风格样式时,貌似可以只设置风格线样式
- 建议不要单独的只是把样式,设置为网格线样式,最好是能保留原来的风格,在原来风格样式的基础上,添加网格线样式,才是正确的方式
- 1 先获取当前对象的风格样式 DWORD dwStyle = m_listCtrl.GetStyle();
- 2 设置 或等于: 如 dwStyle |= LVS_EX_GRIDLINES; m_listCtrl.SetEXtendedStyle(dwStyle);
- 注意点11 如上10,只初始一次的操作,可以放在初始化方法中,不用封装。
- 问题点1: 如果宽度获取的是主窗口的宽度,会对列表宽度有什么样的影响?会不会有问题? ###问题1@待测试