我想做个类似于Windows开始菜单功能的小软件,主要是在托盘位置弹出一个动态创建的菜单,另外还有一个类似于《360桌面》一样的界面(但没那么漂亮)。
首先来看看Windows的开始菜单我自己写的程序是如下的样式:我主要有两点难题没法解决。
1.要在菜单上显示图标:
光是显示个图标这没多大难处,但网上也有很多列子。可问题是这些图表从哪里获取呢?
虽然说大部分图标都是SHELL32.dll里的,但是我必须得在里面一个个去提取图标吗?而且毕竟还有很多菜单项目的图标是在对应的程序文件里的,甚至还有很多文件的图标是随意指定的。再者如果要分情况一个个去提取图标似乎太复杂了。
windows的桌面管理进程explorer.exe是怎么做的呢?2.在开始菜单的某个项目上点击鼠标右键会弹出新的菜单,原来的菜单也不关闭。这是种什么原理呢?是响应某个消息吗?
首先来看看Windows的开始菜单我自己写的程序是如下的样式:我主要有两点难题没法解决。
1.要在菜单上显示图标:
光是显示个图标这没多大难处,但网上也有很多列子。可问题是这些图表从哪里获取呢?
虽然说大部分图标都是SHELL32.dll里的,但是我必须得在里面一个个去提取图标吗?而且毕竟还有很多菜单项目的图标是在对应的程序文件里的,甚至还有很多文件的图标是随意指定的。再者如果要分情况一个个去提取图标似乎太复杂了。
windows的桌面管理进程explorer.exe是怎么做的呢?2.在开始菜单的某个项目上点击鼠标右键会弹出新的菜单,原来的菜单也不关闭。这是种什么原理呢?是响应某个消息吗?
解决方案 »
- Server的OnReceive何时触发?
- 192.168.0.x这组局域网IP,全世界有多少个局域网可以使用这组ip地址。还是只允许某一个局域网使用这组ip地址?
- 如何使gina程序不改变xp登陆对话框的样式
- 怎么和心仪的女孩子交往?
- 如何缩放窗口
- 高手救救我,关于DLL调用的问题
- 数据库追加问题????
- 请问:无法定位程序输入点 PacketGetNetInfo 于动态链接库Packet.dll上 如何解决?
- 谁知道SetupDiCallClassInstaller函数的用法?怎么用它来禁用局域网卡?
- 如何在CG代码中得到相邻顶点的信息?
- CListCtrl控件的一个小问题~
- 线程池回调函数的终止操作
HICON icon_large,icon_small;
if(SUCCEEDED(::SHGetFileInfo(path,0,&sfi,sizeof(SHFILEINFO),SHGFI_ICON | SHGFI_LARGEICON)))
{
icon_large=sfi.hIcon;
}if(SUCCEEDED(::SHGetFileInfo(path,0,&sfi,sizeof(SHFILEINFO),SHGFI_ICON | SHGFI_SMALLICON)))
{
icon_small=sfi.hIcon;
}