# 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