DN_RESIZECONSOLE

Programming Far Manager plugins

DN_RESIZECONSOLE

Событие DN_RESIZECONSOLE передаётся процедуре обработки диалога после изменения размера консоли (например, после того, как пользователь нажал Alt+F9).

Param1

0

Param2

Указатель на структуру COORD, в которой указаны текущие размеры консоли.

Return

TRUE.

Элементы

ЭлементОписание
Диалог сообщение затрагивает только диалог

Замечания

Событие DN_RESIZECONSOLE полезно в том случае, когда плагин умеет подстраиваться под текущие размеры консоли. Пример работы данного события можно наблюдать в диалоге поиска файлов (Alt+F7).

Пример

Изменение размеров диалога поиска (Alt+F7) при изменении размеров консоли.
case DN_RESIZECONSOLE:
{
  COORD coord=(*(COORD*)Param2);
  SMALL_RECT rect;
  int IncY=coord.Y-DlgHeight-4;

  ...

  Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,FALSE,0);

  Info.SendDlgMessage(hDlg,DM_GETDLGRECT,0,&rect);
  coord.X=rect.Right-rect.Left+1;
  DlgHeight+=IncY;
  coord.Y=DlgHeight;

  if (IncY > 0)
    Info.SendDlgMessage(hDlg,DM_RESIZEDIALOG,0,&coord);

  for (I=0; I < 2; I++)
  {
    Info.SendDlgMessage(hDlg,DM_GETITEMPOSITION,I,&rect);
    rect.Bottom+=(short)IncY;
    Info.SendDlgMessage(hDlg,DM_SETITEMPOSITION,I,&rect);
  }

  for (I=2; I < 10; I++)
  {
    Info.SendDlgMessage(hDlg,DM_GETITEMPOSITION,I,&rect);
    if (I==2)
      rect.Left=-1;
    rect.Top+=(short)IncY;
    Info.SendDlgMessage(hDlg,DM_SETITEMPOSITION,I,&rect);
  }

  if (IncY <= 0)
    Info.SendDlgMessage(hDlg,DM_RESIZEDIALOG,0,&coord);

  Info.SendDlgMessage(hDlg,DM_ENABLEREDRAW,TRUE,0);

  ...

  return TRUE;
}
Смотрите также: