1. 首先需要在 presubcalsswindow() 中 添加图片列表 Cimagelist 设置 图片的大小(目的将 行距 加大)
2.setImagelist(&CimageList,LVSIL_STATE );
3. CRect rect;
GetWindowRect(&rect);
InsertColumn(0,TEXT("PID"),LVCFMT_LEFT);//添加 列
SetColumnWidth(0,rect.right - rect.left-4);// 设置 列宽
SetExtendedStyle( LVS_EX_FULLROWSELECT
|LVS_OWNERDRAWFIXED
|LVS_EX_SUBITEMIMAGES
|LBS_OWNERDRAWVARIABLE);//设置 样式
4 重载DrawItem
(GetItemState(lpDrawItemStruct->itemID,LVIS_SELECTED)) 重绘 时 检测 表项是否被选中 同是绘制响应的图片
参考 http://hi.baidu.com/asmcvc/blog/item/ac6d1ec617c88c169d163dd3.html
同时 presubclasswindow 与 precreatewindow 的区别 参考http://blog.csdn.net/xjh_Love_paopao/archive/2008/07/17/2666494.aspx 及
也在调用函数SetWindowLong进行窗口subclass前调用了PreSubclassWindow.
*******************************************************************************************
通常情况下窗口是由用户创建的
CWnd::Create(..)
●在此流程中,MFC提供一个机会"PreCreateWindow()供用户在创建前作点手脚
而对于对话框等,窗口是通过subclass方式交给用户的
系统读入对话框模板,建立其中各个子窗口
然后将各子窗口的 消息处理函数替换成 对应的C++对象 的消息处理函数 (Subclass:子类化,或"接管") ,然后,这个子窗口就会按类中定义的方式来动作了。
在此过程中,调用的是CWnd:SubclassWindow( HWND hWnd );
●在此流程中,MFC提供一个机会"PreSubclassWindow" 供用户在关联前作点手脚
具体来说,如果你定义一个窗口(如CButton派生类CMyButton),然后使用对话框数据交换将一个按钮与自己的派生类对象关联,这时候,一些"建立前"的处理就应该写在"PreSubclassWindow"中。
如果你用的不是"对话框数据关联",而是在OnInitDialg中自己创建m_mybtn.Create(...)
这时候,一些"建立前"的处理就应该写在
"PreCreateWindow"中。
这里“建立前”的处理包括像那些处理,跟PreCreateWindows()做的一些窗口初始化的工作有什么不同?
PreCreateWindows函数中没有窗口可以用——还没有创建
PreSubclassWindow函数中可以对窗口进行操作。