Как выровнять текстовое поле nsis по вертикали

Я хочу создать текстовое поле высотой 30, а текст, который он использует, имеет шрифт 11pt. Каким-то образом текст всегда появляется в верхней части окна. Я хочу добиться вертикального выравнивания по центру для этого. Кто-нибудь знает, как это можно сделать?

Function fnc_Directoryrequest_Create

  ; custom font definitions
  CreateFont $hCtl_Directoryrequest_Font1 "Calibri" "11" "400"

  nsDialogs::Create 1018
  Pop $hCtl_Directoryrequest
  ${If} $hCtl_Directoryrequest == error
    Abort
  ${EndIf}

  ${NSD_CreateText} 37u 42u 327 30 "C:\mySample\TestLocation\here"
  Pop $hCtl_Directoryrequest_DirRequest1_Txt
  SendMessage $hCtl_Directoryrequest_DirRequest1_Txt ${WM_SETFONT} $hCtl_Directoryrequest_Font1 0

  ${NSD_CreateButton} 253u 40u 35 30 "..."
  Pop $hCtl_Directoryrequest_DirRequest1_Btn
  SendMessage $hCtl_Directoryrequest_DirRequest1_Btn ${WM_SETFONT} $hCtl_Directoryrequest_Font1 0
  ${NSD_OnClick} $hCtl_Directoryrequest_DirRequest1_Btn fnc_hCtl_Directoryrequest_DirRequest1_Click

FunctionEnd

1 ответ

Решение

Стандартный элемент управления редактирования НЕ имеет стиля выравнивания по вертикали, а EM_SETRECT работает только для многострочных элементов управления редактированием.

Если вы действительно думаете, что это то, что вам нужно, тогда единственный вариант - написать плагин NSIS, который может создать пользовательский элемент управления для редактирования.

Я хотел бы предложить вам просто использовать 12u в качестве высоты и шрифта по умолчанию...

Другие вопросы по тегам