ArcShowDialogProcW функция

Начало  Предыдущая  Следующая

Плагин может использовать эту функцию для вывода, как простого окна сообщения (например, окно About), так и окна с элементами диалога.

Использование данной функции вместо собственных окон позволяет уменьшить размер плагина.

Для использования данной функции плагин должен запомнить указатель на неё в ArcInitPluginW.

Синтаксис C++

typedef int (__stdcall *ArcShowDialogProcW)(

                _In_ LONG_PTR Session,

                _In_ wchar_t *WinCaption,

                _In_ wchar_t *FormattedText,

                _In_ wchar_t *ControlsDesc,

                _Out_opt_ wchar_t *ResultsBuffer,

                _Inout_ int *pResultsBufferLen,

                _In_ int ImageIndex

);

 

Параметры

Session [in]

Тип: LONG_PTR

Идентификатор сессии.

WinCaption [in]

Тип: wchar_t*

0-терминированная строка, заголовок окна.

FormattedText [in]

Тип: wchar_t*

0-терминированная строка, текст сообщения в окне. Строка может записываться в специальном форматированном виде.

ControlsDesc [in]

Тип: wchar_t*

0-терминированная строка, описывающая элементы диалога окна. Пустая строка – элементы диалога в окне отсутствуют, иначе строка имеет специальный формат.

ResultsBuffer [out, optional]

Тип: wchar_t*

Указатель на буфер юникод-строк (может быть NULL, если введенные пользователем значения отсутствуют или не интересуют).

Строки отделяются друг от друга 0-символом. Каждая строка – это результат ввода в очередном элементе. Таким образом, в данном буфере количество строк равняется количеству элементов CheckBox, RadioButton, ComboBox и TextBox.

Для CheckBox и RadioButton – это один символ: "1"  – флажок установлен, "0" – не установлен.

Для ComboBox без возможности редактирования – это число, номер выбранного текста в выпадающем списке, если ничего не выбрано – число -1.

Для ComboBox с возможностью редактирования и TextBox – это введенная строка.

В данную строку не попадают результаты выбора контролов Label, Space, CommandLink и Button. Их результаты попадают в результат самой функции ArcShowDialogProcW, а Label и Space просто не имеет результатов.

pResultsBufferLen [in, out]

Тип: int*

На входе – это указатель на максимальную длина буфера ResultsBuffer в юникод-символах, на выходе – размер результирующего буфера (включая последний 0-символ).

Если на выходе возвращается размер результирующего буфера больше максимального размера, то это означает, что в буфер не вместились все значения. В этом случае результирующие значения в буфере будут обрезаны (0-символа в конце может не быть).

ImageIndex [in]

Тип: int

Картинка в окне сообщения:

Код

Комментарий

-1

Картинку не показывать

1

Информация

2

Вопрос

3

Восклицание, внимание

4

Ошибка

5

Все нормально

Возвращаемое значение

Тип: int

В случае, если в окне присутствуют контролы CommandLink, то возвращается порядковый номер одного из этих контролов (начиная с 0).

Если пользователь нажал одну из кнопок, то вернется порядковый номер кнопки с минусом (отсчет кнопок идет слева).

Если пользователь нажал клавишу Esc или использовал кнопку закрытия окна, то вернется -1000.