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: 如果宽度获取的是主窗口的宽度,会对列表宽度有什么样的影响?会不会有问题? ###问题[email protected]待测试
PoEdu-Windows编程-Lesson04_项目开始_阶段学习重点