如何:访问内置字体和颜色方案

Visual Studio 集成 (IDE)开发环境具有与编辑器窗口字体和颜色的模式。 通过 IVsTextView 接口来访问此模式。

若要使用内置的字体和颜色方案, VSPackage 必须:

  • 定义类别使用默认字体和颜色服务。

  • 注册默认字体和颜色服务器的类别。

  • 建议 IDE 使用 T:Microsoft.VisualStudio.TextManager.Interop.IVsTextEditorPropertyCategoryContainerT:Microsoft.VisualStudio.TextManager.Interop.IVsTextEditorPropertyContainer 接口,特定窗口使用内置显示项目和类别。

IDE 使用结果的分类为窗口的句柄。 类的名称在 字体和颜色 属性页的 显示设置为: 下拉框中显示。

使用内置的字体和颜色,定义类别

  1. 创建随机 GUID。

    此 GUID 用于唯一标识类别**。**此类别重新使用 IDE 的默认字体和颜色规范。 有关更多信息,请参见 GUIDGEN Sample: Generates Globally Unique Identifiers (GUIDs)

    备注

    当检索与 IVsFontAndColorEvents 或其他接口的字体和颜色数据, Vspackage 使用此 GUID 引用内置信息时。

  2. 必须将类的名称改为在 VSPackage 中的资源 (.rc) 文件中的一个字符串表,因此,在 IDE 可本地化根据需要,同时显示。

    有关更多信息,请参见 添加或删除字符串

注册使用内置的字体和颜色的类别

  1. 构造一种特殊类型的类别注册表项在以下位置:

    [HKLM \ \SOFTWARE\Microsoft \Visual StudioVisual Studio version\FontAndColors \Category]

    Category 是类的非本地化名称。

  2. 填充注册表使用常用字体和颜色方案包含四个值:

    名称

    类型

    数据

    说明

    类别

    REG_SZ

    GUID

    标识类别包含常用字体和颜色方案的任意 GUID。

    Package

    REG_SZ

    GUID

    {} F5E7E71D-1401-11D1-883B-0000F87579D2

    使用默认的字体和颜色配置的所有 Vspackage 使用此 GUID。

    NameID

    REG_DWORD

    ID

    一个可本地化类别名称的资源 ID 在 VSPackage 中。

    ToolWindowPackage

    REG_SZ

    GUID

    实现 IVsTextView 接口的 VSPackage 的 GUID。

若要启动使用系统提供的字体和颜色

  1. 为窗口的实现和初始化一部分,创建 T:Microsoft.VisualStudio.TextManager.Interop.IVsTextEditorPropertyCategoryContainer 接口的实例。

  2. 调用 GetPropertyCategory 方法获取 T:Microsoft.VisualStudio.TextManager.Interop.IVsTextEditorPropertyContainer 接口的实例与当前 IVsTextView 实例相对应。

  3. 调用两次 SetProperty

    • 调用与 VSEDITPROPID_ViewGeneral_ColorCategory作为参数。

    • 调用与 VSEDITPROPID_ViewGeneral_FontCategory 作为参数。

    这组并显示默认的字体和颜色服务作为窗口的属性。

示例

下面的示例启动使用内置的字体和颜色。

CComVariant vt;
CComQIPtr<IVsTextEditorPropertyCategoryContainer> spPropCatContainer(m_spView);
if (spPropCatContainer != NULL){
    CComPtr<IVsTextEditorPropertyContainer> spPropContainer;
    if (SUCCEEDED(spPropCatContainer->GetPropertyCategory(GUID_EditPropCategory_View_MasterSettings, 
                                                          &spPropContainer))){
        CComVariant vt;CComVariant VariantGUID(bstrGuidText);
        spPropContainer->SetProperty(VSEDITPROPID_ViewGeneral_FontCategory, VariantGUID);
        spPropContainer->SetProperty(VSEDITPROPID_ViewGeneral_ColorCategory, VariantGUID);
    }
}

请参见

概念

获取文本着色的字体和颜色信息

访问存储的字体和颜色设置

字体和颜色概述

其他资源

字体