gpt4 book ai didi

c++ - 实现覆盖图标?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:13 27 4
gpt4 key购买 nike

我在 http://www.codeproject.com/KB/shell/overlayicon.aspx 阅读了这篇文章.我有一些我无法回答的问题。请帮帮我好吗?

  1. 当我将项目构建到 COM dll 时。当我使用其他程序调用此 dll 时。我可以调用哪种方法来在所选文件上显示叠加图标?我想我会打电话GetOverlayInfo() 先调用 IsMemberOf()?只有 2 个功能?
  2. GetOverlayInfo() 中。我会在第一个参数中传递什么值吗?叠加图标的路径?或将在其上设置覆盖图标的文件路径?你能举个例子吗?
  3. 在下面的函数中:

    STDMETHODIMP CMyOverlayIcon::GetOverlayInfo(
    LPWSTR pwszIconFile,
    int cchMax,int* pIndex,
    DWORD* pdwFlags)
    {
    GetModuleFileName(_AtlBaseModule.GetModuleInstance(),pwszIconFile,cchMax);

    *pIndex =0;
    *pdwFlags = ISIOI_ICONFILE | ISIOI_ICONINDEX;

    return S_OK;
    }

你能告诉我当我从外部程序调用它时,我可以将什么值传递给函数吗?您能否举例说明如何调用它并向其传递值?

  1. pwszIconFile
  2. cchMax
  3. pIndex
  4. pdwFlags(当我从外部调用它时,我可以传递哪个值。Ex C# 程序)

最佳答案

  1. 是的,您可以只使用这两个函数。但无论如何我都会调用 GetPriority(),即使您不使用返回值。您永远不会知道覆盖处理程序是否依赖于该调用(如果您没有自己编写的话)。您只需调用 GetOverlayInfo() 一次,但对于您想要为其显示叠加图标的每个文件调用 IsMemberOf()。
  2. 您必须传递一个(空)缓冲区,并在 cchMax 中传递缓冲区的长度。 Overlay 处理程序随后将使用图标文件的路径填充缓冲区。但是您还必须检查 pdwFlags 和 pIndex(两者也都由覆盖处理程序填充) - 根据 pdwFlags 中设置的标志,您可以在 pwszIconFile 中获得图标文件的路径或包含 exe 文件的路径其资源中的图标。如果是后者,那么pIndex的值就是你要加载的exe文件中图标的资源索引。

您没有说明为什么要自己调用覆盖处理程序。如果您只是想像资源管理器在某些 ListView 或对话框中那样显示图标,您可以使用更简单的路线,您不需要阅读注册所有覆盖处理程序的注册表(并且一些系统覆盖是甚至在那里注册!)。

看看KB192055 ,也许这是满足您需要的更好方法?

关于c++ - 实现覆盖图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1972875/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com