IVsCompletionSet.OnCommit(String, Int32, Int32, UInt16, String) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет завершение текста.
public:
int OnCommit(System::String ^ pszSoFar, int iIndex, int fSelected, System::UInt16 cCommit, [Runtime::InteropServices::Out] System::String ^ % pbstrCompleteWord);
int OnCommit(std::wstring const & pszSoFar, int iIndex, int fSelected, unsigned short cCommit, [Runtime::InteropServices::Out] std::wstring const & & pbstrCompleteWord);
public int OnCommit (string pszSoFar, int iIndex, int fSelected, ushort cCommit, out string pbstrCompleteWord);
abstract member OnCommit : string * int * int * uint16 * string -> int
Public Function OnCommit (pszSoFar As String, iIndex As Integer, fSelected As Integer, cCommit As UShort, ByRef pbstrCompleteWord As String) As Integer
Параметры
- pszSoFar
- String
[in] Введенный на данный момент текст.
- iIndex
- Int32
[in] Индекс, указывающий элемент набора завершений совпадения.
- fSelected
- Int32
[in] Указывает, выбран ли элемент завершения в окне завершения. Если значение — true, значение pszSoFar параметра заменяется текстом, возвращенным GetDisplayText(Int32, String, Int32[]) . Если значение — true, это означает, что S_OK Возврат со значением, pbstrCompleteWord равным, pszSoFar соответствует поведению по умолчанию. Значение по умолчанию fSelected — true.
- cCommit
- UInt16
[in] Последний набранный символ.
- pbstrCompleteWord
- String
[out] Возвращает завершенное слово.
Возвращаемое значение
Если метод завершается успешно, возвращает значение S_OK. В противном случае функция возвращает код ошибки.
Примеры
Ниже приведен пример метода OnCommit.
STDMETHODIMP CFigStatementCompletion::OnCommit(
/*[in] */ const WCHAR *pszSoFar,
/*[in] */ long iIndex,
/*[in] */ BOOL fSelected,
/*[in] */ WCHAR cCommit,
/*[out]*/ BSTR *pbstrCompleteWord )
{
if (IsCharAlphaNumeric(cCommit) || cCommit == ':' || cCommit == '_')
{
// continue trying to match without completion
return S_FALSE;
}
if (null == pbstrCompleteWord)
return E_POINTER;
*pbstrCompleteWord = SysAllocString(m_vecCompletions[ iIndex ]);
return S_OK;
}
Комментарии
Подпись COM
Из текстмгр. IDL:
HRESULT IVsCompletionSet::OnCommit(
[in] const WCHAR *pszSoFar,
[in] long iIndex,
[in] BOOL fSelected,
[in] WCHAR cCommit,
[out] BSTR *pbstrCompleteWord
);
Реализуйте этот метод, чтобы настроить время и способ фиксации завершения операторов в тексте.
Поведение по умолчанию вызывает фиксацию, если пользователь нажимает любой из стандартных символов завершения. Стандартные символы завершения — это любые символы, отличные от буквенно-цифровых, за исключением "~" и "_". Замена текста происходит при фиксации, только если в раскрывающемся списке завершения операторов выбран наиболее подходящий текстовый элемент. Это текст, который заменяет текст, введенный на данный момент.
Этот метод вызывается, только если CSF_CUSTOMCOMMIT для флагов завершения задано значение. Этот метод вызывается по одному разу для каждого символа, который пользователь вводит при активном завершении операторов.
Если этот метод возвращает значение S_FALSE , то фиксация не выполняется и символ вставляется как стандартный (незавершенный) символ.
Примечание
Не возвращайтесь S_FALSE , если символ является клавишей Tab или Ctrl-Enter, так как они применяются принудительно фиксации.
Если этот метод возвращает значение S_OK , происходит фиксация. Если fSelected равно true , то значение, возвращаемое в, pbstrCompleteWord заменяет текст, введенный на данный момент. Если параметр fSelected имеет false значение или возвращается pbstrCompleteWord , то null существующий текст не заменяется при фиксации.