前段时间写一个虚拟桌面的demo,是使用shell接口以及list展现桌面图标以及行为的功能。如图
实现上包括右键菜单的行为。以下是我在开发过程中碰到的一些难点或者说是不注意就会出错的地方,花了不少时间找资料测试。
我的程序是基于vs2008的SDK所带的例子VListvw所做的修改:
C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\winui\controls\common\vlistvw
1. 原程序中在创建list view的时候,使用的style是加了LVS_OWNERDATA;这个风格是基于大数据部分显示功能使用的,每次显示数据更新的时候都需要发送LVN_GETDISPINFO消息给控件,让控件返回显示的数据。我的程序基于已经存储下来的数据,不要使用这个风格来获取信息。应该删除LVS_OWNERDATA风格。
HWND CreateListView(HINSTANCE hInstance, HWND hwndParent)
{
DWORD dwStyle;
HWND hwndListView;
HIMAGELIST himlSmall;
HIMAGELIST himlLarge;
BOOL bSuccess = TRUE;
dwStyle = WS_TABSTOP |
WS_CHILD |
WS_BORDER