Visual Studio 集成 (IDE)开发环境具有与编辑器窗口字体和颜色的模式。 通过 IVsTextView 接口来访问此模式。
若要使用内置的字体和颜色方案, VSPackage 必须:
定义类别使用默认字体和颜色服务。
注册默认字体和颜色服务器的类别。
建议 IDE 使用 T:Microsoft.VisualStudio.TextManager.Interop.IVsTextEditorPropertyCategoryContainer 和 T:Microsoft.VisualStudio.TextManager.Interop.IVsTextEditorPropertyContainer 接口,特定窗口使用内置显示项目和类别。
IDE 使用结果的分类为窗口的句柄。 类的名称在 字体和颜色 属性页的 显示设置为: 下拉框中显示。
使用内置的字体和颜色,定义类别
创建随机 GUID。
此 GUID 用于唯一标识类别**。**此类别重新使用 IDE 的默认字体和颜色规范。 有关更多信息,请参见 GUIDGEN Sample: Generates Globally Unique Identifiers (GUIDs)。
备注
当检索与 IVsFontAndColorEvents 或其他接口的字体和颜色数据, Vspackage 使用此 GUID 引用内置信息时。
必须将类的名称改为在 VSPackage 中的资源 (.rc) 文件中的一个字符串表,因此,在 IDE 可本地化根据需要,同时显示。
有关更多信息,请参见 添加或删除字符串。
注册使用内置的字体和颜色的类别
构造一种特殊类型的类别注册表项在以下位置:
[HKLM \ \SOFTWARE\Microsoft \Visual StudioVisual Studio version\FontAndColors \Category]
Category 是类的非本地化名称。
填充注册表使用常用字体和颜色方案包含四个值:
名称
类型
数据
说明
类别
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。
若要启动使用系统提供的字体和颜色
为窗口的实现和初始化一部分,创建 T:Microsoft.VisualStudio.TextManager.Interop.IVsTextEditorPropertyCategoryContainer 接口的实例。
调用 GetPropertyCategory 方法获取 T:Microsoft.VisualStudio.TextManager.Interop.IVsTextEditorPropertyContainer 接口的实例与当前 IVsTextView 实例相对应。
调用两次 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);
}
}