首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法完成IDeskBand2接口的实现

无法完成IDeskBand2接口的实现
EN

Stack Overflow用户
提问于 2014-05-04 12:58:13
回答 1查看 694关注 0票数 2

我正试图在任务栏中为我的应用程序实现一个DeskBand,我已经检查了文档,但它非常稀疏。它没有解释如何实现IDeskBand2接口。

我在网上发现的信息很少,我发现的东西也不起作用。我发现在CodeProject上看起来很有前途的一段代码不过是编译时错误的喷泉,直到今天我偶然发现了网站。

到目前为止,我得到的是:

代码语言:javascript
复制
class COMInterop
{
    [ComImport]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    [Guid("79D16DE4-ABEE-4021-8D9D-9169B261D657")]

    public interface IDeskBand2
    {
        void GetWindow(out System.IntPtr phwnd);
        void ContextSensitiveHelp([In] bool fEnterMode);
        void ShowDW([In] bool fShow);
        void CloseDW([In] UInt32 dwReserved);
        void ResizeBorderDW(IntPtr prcBorder, [In, MarshalAs(UnmanagedType.IUnknown)] Object punkToolbarSite, bool fReserved);

        void GetBandInfo(UInt32 dwBandID, UInt32 dwViewMode, ref DESKBANDINFO pdbi);
        bool CanRenderComposited();
        bool GetCompositionState();
        void SetCompositionState(bool fCompositionEnabled);
    }
}

它位于一个名为COMInterop.cs的类文件中。

我现在遇到的问题是在24号线上。它说The type or namespace 'DESKBANDINFO是找不到的。(您是缺少了使用指令还是程序集引用?)

我如何实现这一点-您有任何良好的文档DeskBand (见下图)的DeskBand 7+?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-04 13:07:56

DESKBAND信息是一个结构化文档的这里。您可以在C#上找到pinvoke.net翻译。

代码语言:javascript
复制
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
    public int X;
    public int Y;

    public POINT(int x, int y)
    {
        this.X = x;
        this.Y = y;
    }

    public POINT(System.Drawing.Point pt) : this(pt.X, pt.Y) { }

    public static implicit operator System.Drawing.Point(POINT p)
    {
        return new System.Drawing.Point(p.X, p.Y);
    }

    public static implicit operator POINT(System.Drawing.Point p)
    {
        return new POINT(p.X, p.Y);
    }
}

[StructLayout (LayoutKind.Sequential, CharSet=CharSet.Unicode)]
struct DESKBANDINFO {
    public uint dwMask;
    public Point ptMinSize;
    public Point ptMaxSize;
    public Point ptIntegral;
    public Point ptActual;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 255)]
    public String wszTitle;
    public uint dwModeFlags;
    public Int32 crBkgnd; 
}

桌面API 文档清楚地声明它是一个不受欢迎的API。上面写着:

重要的你应该在新的开发中使用缩略图工具栏来代替桌面带,这在Windows 7中是不受支持的。

换句话说,您几乎肯定不应该使用桌面API来解决您的问题。

尽管如此,如果您想学习如何使用桌面API,请在C++中查找例如代码。不要将搜索限制在C#上。希望在C++中找到好的示例,但在C#中找不到。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23456505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档