IVsHiColorItem 인터페이스
24 비트 컬러 값 반환을 지원을 합니다.
네임스페이스: Microsoft.VisualStudio.TextManager.Interop
어셈블리: Microsoft.VisualStudio.TextManager.Interop.8.0(Microsoft.VisualStudio.TextManager.Interop.8.0.dll)
구문
‘선언
<InterfaceTypeAttribute()> _
<GuidAttribute("16C240B3-4773-43C2-932A-1E8DD2F6F0F8")> _
Public Interface IVsHiColorItem
[InterfaceTypeAttribute()]
[GuidAttribute("16C240B3-4773-43C2-932A-1E8DD2F6F0F8")]
public interface IVsHiColorItem
[InterfaceTypeAttribute()]
[GuidAttribute(L"16C240B3-4773-43C2-932A-1E8DD2F6F0F8")]
public interface class IVsHiColorItem
[<InterfaceTypeAttribute()>]
[<GuidAttribute("16C240B3-4773-43C2-932A-1E8DD2F6F0F8")>]
type IVsHiColorItem = interface end
public interface IVsHiColorItem
IVsHiColorItem 형식에서는 다음과 같은 멤버를 노출합니다.
메서드
이름 | 설명 | |
---|---|---|
GetColorData | 지정 된 요소에 대 한 RGB 값을 검색합니다. |
위쪽
설명
이 인터페이스를 사용 하 여 비트 또는 높은 색상 값에 대 한 지원을 제공 합니다. 구현 하는 클래스에서 구현 되는 IVsColorableItem 또는 IVsPackageDefinedTextMarkerType 인터페이스입니다.
구현자 참고 사항
경우 높음에 대 한 지원이 필요한 색상 값,이 인터페이스를 구현 하는 클래스에서 구현 해야는 IVsColorableItem 또는 IVsPackageDefinedTextMarkerType 인터페이스.
호출자 참고 사항
이 인터페이스를 구현 하는 개체에서 가져올 수 있는지 여부는 IVsColorableItem 또는 IVsPackageDefinedTextMarkerType 인터페이스, 높은 색상 값에 대 한 광고 지원 개체입니다. 호출 하는 GetColorData 메서드는 RGB 값이 개별 전경, 배경 및 선 색상에 대 한. 경우는 GetColorData 메서드는 오류를 반환 하 고 원래 색깔이 액세스를 정상적으로 다시 속하는 IVsColorableItem 또는 IVsPackageDefinedTextMarkerType 인터페이스입니다.
예제
다음은 관리 되는 코드를 구현 하는 방법의 예는 IVsHiColorItem 인터페이스와 인스턴스화할. 빨간색, 녹색 및 파랑 값으로 변환 됩니다 참고는 COLORREF 에 MyRGB 생성자입니다. 이 예제는 언어 서비스입니다.
using Microsoft.VisualStudio.TextManager.Interop;
namespace MyNamespace
{
internal struct MyRGB
{
public uint ColorRef;
public MyRGB(int r, int g, int b)
{
ColorRef = (uint)System.Drawing.ColorTranslator.ToWin32(
System.Drawing.Color.FromArgb(r, g, b));
}
public MyRGB(bool fInvalid)
{
ColorRef = unchecked((uint)-1);
}
public bool IsValid()
{
return ColorRef != unchecked((uint)-1);
}
}
internal class MyColorItem : IVsColorableItem, IVsHiColorItem
{
// Indicates that the returned RGB value is really an index
// into a predefined list of colors.
private const uint COLOR_INDEXED = 0x01000000;
//==========================================================
// Private fields.
private COLORINDEX foreColor;
private COLORINDEX backColor;
private FONTFLAGS fontFlags;
private MyRGB foreRGB;
private MyRGB backRGB;
private string name;
private string displayName;
//==========================================================
// Public constructors.
public MyColorItem(string name,
string displayName,
COLORINDEX foreColor,
COLORINDEX backColor,
FONTFLAGS fontFlags)
{
this.name = name;
this.displayName = displayName;
this.foreColor = foreColor;
this.backColor = backColor;
this.fontFlags = fontFlags;
this.foreRGB = new MyRGB(false);
this.backRGB = new MyRGB(false);
}
public MyColorItem(string name,
string displayName,
COLORINDEX foreColor,
COLORINDEX backColor,
FONTFLAGS fontFlags,
MyRGB foreRGB,
MyRGB backRGB)
{
this.name = name;
this.displayName = displayName;
this.foreColor = foreColor;
this.backColor = backColor;
this.fontFlags = fontFlags;
this.foreRGB = foreRGB;
this.backRGB = backRGB;
}
//==========================================================
// IVsColorableItem methods.
#region IVsColorableItem Members
int IVsColorableItem.GetDefaultColors(COLORINDEX[] piForeground,
COLORINDEX[] piBackground)
{
int retval = VSConstants.E_POINTER;
if (piForeground != null)
{
piForeground[0] = this.foreColor;
retval = VSConstants.S_OK;
}
if (piBackground != null)
{
piBackground[0] = this.backColor;
}
return retval;
}
int IVsColorableItem.GetDefaultFontFlags(out uint pdwFontFlags)
{
pdwFontFlags = (uint)this.fontFlags;
return VSConstants.S_OK;
}
int IVsColorableItem.GetDisplayName(out string pbstrName)
{
pbstrName = this.displayName;
return VSConstants.S_OK;
}
#endregion
//==========================================================
// IVsHiColorItem methods.
#region IVsHiColorItem Members
int IVsHiColorItem.GetColorData(int cdElement, out uint pcrColor)
{
int retval = VSConstants.E_NOTIMPL;
pcrColor = 0;
switch ((__tagVSCOLORDATA)cdElement)
{
case __tagVSCOLORDATA.CD_BACKGROUND:
pcrColor = this.backRGB.IsValid() ?
this.backRGB.ColorRef :
(uint)backColor | COLOR_INDEXED;
retval = VSConstants.S_OK;
break;
case __tagVSCOLORDATA.CD_FOREGROUND:
case __tagVSCOLORDATA.CD_LINECOLOR:
pcrColor = this.foreRGB.IsValid() ?
this.foreRGB.ColorRef :
(uint)foreColor | COLOR_INDEXED;
retval = VSConstants.S_OK;
break;
default:
retval = VSConstants.E_INVALIDARG;
break;
}
return retval;
}
#endregion
}
//==============================================================
// Example of how to instantiate the MyColorItem class.
public class MyLanguageService
{
private ColorableItem[] colorableItemsList;
public MyLanguageService()
{
colorableItemsList = {
new MyColorableItem("MyLanguage- Text",
"MyLanguage- Text",
COLORINDEX.CI_SYSPLAINTEXT_FG,
COLORINDEX.CI_SYSPLAINTEXT_BK,
FONTFLAGS.FF_BOLD),
new MyColorableItem("MyLanguage- Keyword",
"MyLanguage- Keyword",
COLORINDEX.CI_MAROON,
COLORINDEX.CI_SYSPLAINTEXT_BK,
FONTFLAGS.FF_BOLD,
new MyRGB(192,64,0),
new MyRGB(false)),
new MyColorableItem("MyLanguage- Operator",
"MyLanguage- Operator",
COLORINDEX.CI_DARKBLUE,
COLORINDEX.CI_BLUE,
FONTFLAGS.FF_PLAIN,
new MyRGB(0,64,192),
new MyRGB(128,128,255))
};
}
}
}