DM_SETHISTORY

Сообщение DM_SETHISTORY позволяет управлять наличием истории в строках ввода.

Param1

ID элемента диалога.

Param2

Указатель на строку, содержащую название истории ввода или NULL, если необходимо отключить историю в строке ввода.

Return

FALSE - указанный элемент диалога Param1 не поддерживает работу с историей.
TRUE - история успешно назначена элементу диалога Param1.

Элементы

ЭлементОписание
DI_EDIT строка ввода
DI_FIXEDIT поле ввода фиксированного размера

Замечания

Если строка ввода пуста и у элемента DI_EDIT выставлен флаг DIF_USELASTHISTORY, то Far Manager сам подставит первое значение из истории в строку ввода.

Пример

Применение данного сообщения можно увидеть в исходных текстах плагина MultiArc.

Следующий пример выставляет историю и очищает строку ввода:

...
  else if(Msg == MAM_ARCSWITCHES)
  {
    static wchar_t SwHistoryName[MAX_PATH];
    FSF.sprintf(SwHistoryName,L"ArcSwitches\\%s",pdd->ArcFormat);
    Info.SendDlgMessage(hDlg,DM_SETHISTORY,4,SwHistoryName);
    Info.SendDlgMessage(hDlg,DM_SETTEXTPTR,4,L"");
  }
...

Для того, чтобы Far Manager сам подставил первую строку из истории ключей, необходимо приведённый выше код переписать так:

...
  else if(Msg == MAM_ARCSWITCHES)
  {
    static wchar_t SwHistoryName[MAX_PATH];
    FSF.sprintf(SwHistoryName,L"ArcSwitches\\%s",pdd->ArcFormat);
    Info.SendDlgMessage(hDlg,DM_SETTEXTPTR,4,L"");
    Info.SendDlgMessage(hDlg,DM_SETHISTORY,4,SwHistoryName);
  }
...

Т.е. сначала строка ввода очищается, потом происходит назначение истории для элемента.

Смотрите также:
DialogInit, DM_ADDHISTORY, DIF_HISTORY