# DM_SETEDITPOSITION

Сообщение `DM_SETEDITPOSITION` посылается обработчику диалога для установки позиции и состояния курсора в строках редактирования диалога.

### Param1

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

### Param2

Указатель на структуру EditorSetPosition.

### Return

`FALSE` - указанный ID элемента не является строковым редактором.
`TRUE` - позиция курсора установлена.

### Элементы

Элемент | Описание
--- | ---
DI_COMBOBOX | комбинированный список
DI_EDIT | строка ввода
DI_FIXEDIT | поле ввода фиксированного размера
DI_PSWEDIT | поле ввода пароля

### Замечания

### Пример

Пример функции поддержки выделения мышью в строках ввода в плагине "Visual renaming files"

    static void MouseSelect(HANDLE hDlg, DWORD idStr, DWORD dwMousePosX)
    {
      SMALL_RECT dlgRect, itemRect;
      Info.SendDlgMessage(hDlg, DM_GETDLGRECT, 0, &dlgRect);
      Info.SendDlgMessage(hDlg, DM_GETITEMPOSITION, idStr, &itemRect);

      EditorSetPosition esp={sizeof(EditorSetPosition)};
      Info.SendDlgMessage(hDlg, DM_GETEDITPOSITION, idStr, &esp);

      int length=Info.SendDlgMessage(hDlg, DM_GETTEXT, idStr, 0);
      int CurPos=dwMousePosX - ( dlgRect.Left + itemRect.Left );

      if ( dwMousePosX <= ( dlgRect.Left + itemRect.Left ) && esp.LeftPos > 0 )
        esp.LeftPos-=1;
      else if ( dwMousePosX >= ( dlgRect.Left + itemRect.Right ) && CurPos+esp.LeftPos < length )
        esp.LeftPos+=1;

      if (CurPos+esp.LeftPos < 0)
        CurPos=0;
      else if (CurPos+esp.LeftPos > length)
        CurPos=length;
      else
        CurPos+=esp.LeftPos;

      esp.CurPos=esp.CurTabPos=CurPos;

      if (bStartSelect)
      {
        StartPosX=CurPos;
        bStartSelect=false;
      }

      EditorSelect es={sizeof(EditorSelect)};
      es.BlockType=BTYPE_COLUMN;
      es.BlockStartLine=es.BlockHeight=0;

      if (CurPos > StartPosX)
      {
        es.BlockStartPos=StartPosX;
        es.BlockWidth=CurPos-StartPosX;
      }
      else
      {
        es.BlockStartPos=CurPos;
        es.BlockWidth=StartPosX-CurPos;
      }

      Info.SendDlgMessage(hDlg, DM_SETSELECTION, idStr, &es);
      Info.SendDlgMessage(hDlg, DM_SETEDITPOSITION, idStr, &esp);
    }

Смотрите также:
DialogInit, DM_GETCURSORPOS, DM_SETCURSORPOS, DM_GETEDITPOSITION