怎样获得桌面窗口中的图表所代表的项目?

captain_x 2005-06-29 12:25:12
我听说是用的一个ListView保存的,但是怎么获得这个啊?
高手指点一下啊
...全文
171 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
captain_x 2005-07-10
  • 打赏
  • 举报
回复
自己再顶一下,没有其他办法的话就结帖了
captain_x 2005-07-02
  • 打赏
  • 举报
回复
周末愉快,
不过有没有可以不用2003的方法?
captain_x 2005-07-02
  • 打赏
  • 举报
回复
呵呵,谢谢了
idAnts 2005-07-02
  • 打赏
  • 举报
回复
你从别人那里考一个2003的shlwapi.lib吧,呵呵。
周末愉快啊,我去玩了。
Hendy_So 2005-07-02
  • 打赏
  • 举报
回复
装SDK2003
captain_x 2005-07-02
  • 打赏
  • 举报
回复
我查了msdn,SHGetFolderLocation和StrRetToBuf在shlwapi.h和shlobj里都有定义,在shell32.dll的5。0版本或以上的都可以,我的是2000,ie6,应该可以用啊。
captain_x 2005-07-02
  • 打赏
  • 举报
回复
s.obj : error LNK2001: unresolved external symbol __imp__StrRetToBufA@16
s.obj : error LNK2001: unresolved external symbol __imp__SHGetFolderLocation@20
Release/desktopdemo.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

我已经把这两个库文件加进去了,怎么还是连接不上呢?
抓狂ing。。。
idAnts(你才无聊呢) 这么辛苦的帮我,不好意思啊,偶水平有点差啊
captain_x 2005-07-01
  • 打赏
  • 举报
回复
就是在程序中可以保存桌面的位图,但是怎么才能对程序中的这些象对桌面的一样操作呢?
idAnts 2005-07-01
  • 打赏
  • 举报
回复
我定义的是StrRetToBufA,从2003里抓出来的,再多定义一个:
#define StrRetToBuf StrRetToBufA
captain_x 2005-07-01
  • 打赏
  • 举报
回复
D:\cs\desktopdemo\s.cpp(43) : error C2065: 'StrRetToBuf' : undeclared identifier
Error executing cl.exe.
我这里没装2003,我把shell32.lib和shlwapi.lib这两个库文件都已经加进去了,怎么还不行呢?
idAnts 2005-07-01
  • 打赏
  • 举报
回复
你是vc6吧,这个在vc7的头文件里定义,如果你要vc6编译,可以这么搞:

#include "shlwapi.h"

#define CSIDL_PROGRAM_FILES 0x0026

SHSTDAPI SHGetFolderLocation(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPITEMIDLIST *ppidl);
LWSTDAPI StrRetToBufA(STRRET *pstr, LPCITEMIDLIST pidl, LPSTR pszBuf, UINT cchBuf);

#pragma comment(lib,"C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Vc7\\PlatformSDK\\Lib\\shell32.lib")
#pragma comment(lib,"C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Vc7\\PlatformSDK\\Lib\\shlwapi.lib")
captain_x 2005-07-01
  • 打赏
  • 举报
回复
D:\cs\desktopdemo\s.cpp(23) : error C2065: 'SHGetFolderLocation' : undeclared identifier
D:\cs\desktopdemo\s.cpp(23) : error C2065: 'CSIDL_PROGRAM_FILES' : undeclared identifier
D:\cs\desktopdemo\s.cpp(35) : error C2065: 'StrRetToBuf' : undeclared identifier
Error executing cl.exe.

desktopdemo.exe - 3 error(s), 0 warning(s)
有3个错误阿 ,是不是我的 vc设置的问题?
idAnts 2005-07-01
  • 打赏
  • 举报
回复
遍历桌面:
#include <shlobj.h>
#include <shlwapi.h>
#include <iostream.h>

main()
{
LPMALLOC pMalloc;
LPITEMIDLIST pidlProgFiles = NULL;
LPITEMIDLIST pidlItems = NULL;
IShellFolder *psfFirstFolder = NULL;
IShellFolder *psfDeskTop = NULL;
IShellFolder *psfProgFiles = NULL;
LPENUMIDLIST ppenum = NULL;
ULONG celtFetched;
HRESULT hr;
STRRET strDispName;
TCHAR pszDisplayName[MAX_PATH];
ULONG uAttr;

CoInitialize( NULL );
hr = SHGetMalloc(&pMalloc);

hr = SHGetFolderLocation(NULL, CSIDL_PROGRAM_FILES, NULL, NULL, &pidlProgFiles);

hr = SHGetDesktopFolder(&psfDeskTop);

hr = psfDeskTop->BindToObject(pidlProgFiles, NULL, IID_IShellFolder, (LPVOID *) &psfProgFiles);
psfDeskTop->Release();

hr = psfProgFiles->EnumObjects(NULL,SHCONTF_FOLDERS | SHCONTF_NONFOLDERS, &ppenum);

while( hr = ppenum->Next(1,&pidlItems, &celtFetched) == S_OK && (celtFetched) == 1)
{
psfProgFiles->GetDisplayNameOf(pidlItems, SHGDN_INFOLDER, &strDispName);
StrRetToBuf(&strDispName, pidlItems, pszDisplayName, MAX_PATH);
cout << pszDisplayName << '\n';
if(!psfFirstFolder)
{
uAttr = SFGAO_FOLDER;
psfProgFiles->GetAttributesOf(1, (LPCITEMIDLIST *) &pidlItems, &uAttr);
if(uAttr & SFGAO_FOLDER)
{
hr = psfProgFiles->BindToObject(pidlItems, NULL, IID_IShellFolder, (LPVOID *) &psfFirstFolder);
}
}
pMalloc->Free(pidlItems);
}

cout << "\n\n";

ppenum->Release();

if(psfFirstFolder)
{
hr = psfFirstFolder->EnumObjects(NULL,SHCONTF_FOLDERS | SHCONTF_NONFOLDERS, &ppenum);

while( hr = ppenum->Next(1,&pidlItems, &celtFetched) == S_OK && (celtFetched) == 1)
{
psfFirstFolder->GetDisplayNameOf(pidlItems, SHGDN_INFOLDER, &strDispName);
StrRetToBuf(&strDispName, pidlItems, pszDisplayName, MAX_PATH);
cout << pszDisplayName << '\n';
pMalloc->Free(pidlItems);
}
}

ppenum->Release();
pMalloc->Free(pidlProgFiles);
pMalloc->Release();
psfProgFiles->Release();
psfFirstFolder->Release();

CoUninitialize();
return 0;
}
vcmute 2005-06-30
  • 打赏
  • 举报
回复
lnk?
Hendy_So 2005-06-30
  • 打赏
  • 举报
回复
你想要得图标的什么信息?
captain_x 2005-06-30
  • 打赏
  • 举报
回复
有没有简单一点的方法?
captain_x 2005-06-29
  • 打赏
  • 举报
回复
谢谢 ,看一下
Hendy_So 2005-06-29
  • 打赏
  • 举报
回复
普通桌面确实是一个ListView控件,你要取它的信息需要在Explorer.exe进程里才能取得到。
可以参考《Windows核心编程》第22章的一个例子,讲的就是如何将DLL注入桌面进程保存和恢复桌面图标的位置的。
桌面数据库是一款高效的数据库管理与制表平台软件。软件集数据管理、表格制作、富文本编辑为一体,能够实现全方位的数据查询。桌面数据库使用方便,速度快,质量高,对于用户来说是一款很不错的软件,小编这里推荐大家使用这款软件! 64位系统安装注意事项 1、必须以管理员身份安装。 2、如果提示找不到“C:WindowsDownloaded Installations”,可手工建立该文件夹。 桌面数据库安装说明 1、卸载旧版,然后安装新版。 2、卸载前,若使用了《桌面数据库》自带的表,需要备份该表。用户自己建立的表,无须备份。 桌面数据库功能 1、全方位的数据查询: 无论多么复杂的查询,在这里变得十分简单,毋须专业知识,点几下按钮,即可实现。 所有查询结果,均可按需再统计、汇总、打印、导出到Excel。 2、简捷易用的表格制作、打印,功能清晰,最傻瓜型操作,不会用Excel的人,也会很快上手,比Excel易用许多。可以编辑当前表数据,也可以编制任意常规表格(可以插入图片,目前尚不支持曲线图表等)。设计的表格,可以直接打印,也可导出到Excel。 3、完全自由的自动汇总:    想针对哪些项目进行汇总,可由用户自由定制,极为方便。随时可以按年、按季、按月、按日、按分类、按任意条件……进行汇总。 针对复杂交叉的起迄日期进行数据汇总,高度智能。 4、无须再头疼Excel的数据透视表: 各类汇总,点一下按钮,均可导出到Excel。 5、自由定义的自动计算: 操作过程,所有的自动计算,均可由用户自行确定,并可随时启用。另提供多种直观的计算窗口,满足各类计算需要(包括复杂计算,不需要数学知识)。 提供库存、账务结余类的专用计算函数,可实现原库存、现库存、金融平账等自动计算。 其他自动计算如:宾馆入住结算、学分计算、餐饮结算、即时销售(有销售专用窗口)、财务……均可有效处理。 6、强劲的事项提醒: 想要提醒的事项,任意指定。 7、图片、文本的自动对号批量导入: 这对于一些需要使用图片的管理(如学籍管理、房产介、司法案例……),十分方便。文本文件,亦可对号导入。 8、数据内容自由克隆(包括框选数据),可以粘贴到Excel、Word任何位置,不再受Officel版本变化的限制。 9、字符数据的多方位处理,独辟蹊径。 10、数据录入时,可以自动填值。表格录入数据,右键点击单元格,可呼出词库,省去输入多个汉字的麻烦。  11、快捷的简易打印(包括二联单打印。自由设置格式,保存后可自动启用)、表格设计打印、任意复杂报表的设计与打印、导出到Excel打印。 桌面数据库截图
桌面数据库》不是一款单纯的软件,而是一个高效的数据管理与表格制作平台,功能强劲,适用范围广,各行业均可使用。 1、自由创建、修改表:有详细的基础知识介绍,生手亦可很快入门。 所有查询结果,均可按需再统计、汇总、打印、导出到Excel。 2、简捷易用的表格制作、打印:功能清晰,最傻瓜型操作,不会用Excel的人,也能很快上手。可以编辑当前表数据,亦可编制任意常规表格(可以插入图片,目前尚不支持曲线图表与文字旋转等)。设计的表格,可直接打印,也可导出到Excel。 3、全方位的数据查询:无论多么复杂的查询,在这里变得十分简单,毋须专业知识,点几下按钮,即可实现。 4、完全自由的自动汇总:想针对哪些项目进行汇总,可由用户自由定制,极为方便。随时可以按年、季、月、日、分类、任意条件……进行汇总。 针对复杂交叉的起迄日期进行数据汇总,高度智能。 5、无须再头疼Excel的数据透视表:各类汇总,点一下按钮,均可导出到Excel。 6、自由定义的自动计算:用户可自由设定默认计算公式,并可随时启用。 既使不设定默认计算公式,也可使用灵活的行计算功能(类似Excel,但比Excel易用许多)。 提供库存、账务结余类的专用计算函数,可实现原库存、现库存、金融平账等自动计算。 另提供多种直观的计算窗口,满足各类计算需要(包括复杂计算,不需要数学知识)。 7、强劲的事项提醒:想要提醒的事项,任意指定。 8、图片、文本的自动对号批量导入:这对于一些需要使用图片的管理(如学籍管理、房产介、司法案例……),十分方便。文本文件,亦可对号导入。 9、数据内容自由克隆:可以粘贴到Excel、Word任何位置,不再受Officel版本变化的限制。 10、字符数据的多方位处理,独辟蹊径。 11、数据录入时,可以自动填值。表格录入数据,右键点击单元格,可呼出词库,省去输入多个汉字的麻烦。 12、快捷的简易打印、表格设计打印、任意复杂报表的设计与打印、导出到Excel打印。 13、另提供摇号、个人收藏箱、批量更改文件名、文本词频统计等工具。 ------------------------ 自2012年3月起,《桌面数据库》新增了“表格制作”窗口,用户可以对当前表的数据制作表格并打印,同时可以与Excel交互,各取所长。 “表格制作”窗口的某些功能,实现起来较Excel更为方便,常规表格的制作,比Excel简易快捷。当然,某些复杂功能(如图表、条码、文字旋转、自由画线、对象插入等),“表格制作”窗口尚未具备。 “表格制作”窗口使用的报表组件,是一个免费的ActiveX,基本上不错,但也有不少欠缺:只能有一个Sheet,无undo接口,“剪切”也仅限于文本数据(对表格线、图片无效),打印输出不能自动过滤冗余页、只能对BMP图片进行有效处理、无剪切板操作接口……等多处不足,这迫使我不得不进行功能弥补:完善“剪切”,针对“剪切”、“粘贴”增加undo(撤消)功能,针对表格线实现“撤消”功能,自动过滤打印冗余页,实现简易查询,jpg等图片的复制与粘贴、打印、多Sheet的实现……至v2012.06.001版本,这些功能基本完成,并予完善。如果未发现新的bug,《桌面数据库》近期将不会再予更新。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧