Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 实现覆盖图标?_C++_Com_Mfc - Fatal编程技术网

C++ 实现覆盖图标?

C++ 实现覆盖图标?,c++,com,mfc,C++,Com,Mfc,这篇文章是我在一家报纸上读到的。 我有些问题无法回答。请帮帮我 当我将项目构建到COM dll时。当我使用其他程序调用此dll时。我可以调用哪种方法在所选文件上显示覆盖图标?我想我会打电话的 GetOverlayInfo()首先调用IsMemberOf()?只有两个功能 在GetOverlayInfo()中。我将在第一个参数中传递什么值?覆盖图标的路径?或者将在其上设置覆盖图标的文件路径?你能给我举个例子吗 在以下功能中: STDMETHODIMP CMyOverlayIcon::GetOver

这篇文章是我在一家报纸上读到的。 我有些问题无法回答。请帮帮我

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

    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;
    }
    
  • 你能告诉我,当我从外部程序调用函数时,我能把什么值传递给它吗。 你能给我举个例子,如何调用它并将值传递给它吗

  • pwsziconfig文件
  • cchMax
  • pIndex
  • pdwFlags
    (当我从外部.Ex C#program调用它时,我能传递哪个值吗)
  • 是的,您可以只使用这两个功能。但无论如何,我都会调用GetPriority(),即使不使用返回值。您永远不会知道覆盖处理程序是否依赖于该调用(如果您自己没有编写)。您只需要调用GetOverlayInfo()一次,但对于每个要显示覆盖图标的文件,都需要调用IsMemberOf()
  • 您必须传递一个(空)缓冲区,并在cchMax中传递缓冲区的长度。然后,覆盖处理程序将用图标文件的路径填充缓冲区。但您还必须检查pdwFlags和pIndex(两者也由覆盖处理程序填充)-根据pdwFlags中设置的标志,您可以在pwszIconFile中获得图标文件的路径,也可以获得包含其资源中图标的exe文件的路径。如果是后者,则pIndex值是必须加载的exe文件中图标的资源索引
  • 你没有说你为什么要自己调用覆盖处理程序。如果您只是想像资源管理器在某些列表视图或对话框中那样显示图标,那么可以使用一种更简单的方法,不需要读取注册了所有覆盖处理程序的注册表(有些系统覆盖甚至没有在那里注册!)


    看看,也许这是一种更好的方式满足您的需要?

    您想在哪里显示覆盖图标?在Windows资源管理器中?在这种情况下,您不会从应用程序调用COM dll,而是在需要时自动调用它。COM dll将注册为外壳扩展,Windows资源管理器将调用它。我想编写一个应用程序,在我右键单击的文件上显示重叠图标。我在codeproject中搜索链接。现在我想编写另一个应用程序,调用这个Overlappicon.dll来实现我的目标。你能告诉我更多或者给我一个样品吗。非常感谢。事实上,我也有同样的问题。在执行某些操作时显示图像。如果你能找到答案,请把它贴在这里!)非常感谢汉克斯·斯特凡。我还有一个问题。你能帮我吗?您能给我一个用C++编写的示例代码吗?(或C?)调用OrLaviCn.DLL的函数来在文件上显示覆盖图标。我正在开发一个程序,该程序具有在所选文件上显示覆盖图标的功能-我右键单击的特定文件。你能帮我吗?我非常感谢你。提前感谢。只需使用上面链接的KB192055中的代码示例。这将做你想要的(只是不要使用“*.lnk”,而是你想要图标覆盖的文件的真正扩展名)。非常感谢Stefan,我读了。但是你能解释一下我如何调用这个函数来在所选文件上启用覆盖图标吗。你能给我一个样本片段吗。提前谢谢