次の方法で共有


IDebugDocumentText2::GetText

ドキュメント内の指定された位置からテキストを取得します。

構文

int GetText(
    eumn_TEXT_POSITION pos,
    uint               cMaxChars,
    IntPtr             pText,
    out uint           pcNumChars
);

パラメーター

pos
[入力] 取得するテキストの位置を示す TEXT_POSITION 構造体。

cMaxChars
[入力] 取得するテキストの最大文字数。

pText
[入力、出力] 目的のテキストが格納されるバッファーへのポインター。 このバッファーには、少なくとも cMaxChars 個のワイド文字を含めることができる必要があります。

pcNumChars
[出力] 実際に取得された文字数を返します。

戻り値

成功した場合は、S_OK を返します。それ以外の場合は、エラー コードを返します。

この例は、C# からこのメソッドを呼び出す方法を示しています。

using System.Runtime.Interop.Services;
using Microsoft.VisualStudio;
using Microsoft.VisualStudio.Debugger.Interop;

namespace Mynamespace
{
    class MyClass
    {
        string GetDocumentText(IDebugDocumentText2 pText, TEXT_POSITION pos)
        {
            string documentText = string.Empty;
            if (pText != null)
            {
                uint numLines = 0;
                uint numChars = 0;
                int hr;
                hr = pText.GetSize(ref numLines, ref numChars);
                if (ErrorHandler.Succeeded(hr))
                {
                    IntPtr buffer = Marshal.AllocCoTaskMem((int)numChars * sizeof(char));
                    uint actualChars = 0;
                    hr = pText.GetText(pos, numChars, buffer, out actualChars);
                    if (ErrorHandler.Succeeded(hr))
                    {
                        documentText = Marshal.PtrToStringUni(buffer, (int)actualChars);
                    }
                    Marshal.FreeCoTaskMem(buffer);
                }
            }
            return documentText;
        }
    }
}

関連項目