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); }
Смотрите также: