Как назначить имя окна элемента управления EDIT Win32 без отображения текста?

0

В настоящее время я работаю над динамическим созданием диалога Win32 на основе списка параметров, запрашиваемых внешним приложением. Другими словами, пользователь должен предоставить некоторые текстовые/логические ответы, которые отправляются сразу после нажатия OK.

Поскольку порядок и количество элементов управления EDIT и BUTTON могут отличаться, мне нужен способ идентифицировать каждый из них. Очевидным решением для моих ограниченных знаний Win32 является использование параметра lpWindowName в качестве идентификатора при создании диалога и последующего повторения с помощью элементов управления, проверяющих этот же параметр, чтобы соответствующим образом обрабатывать входные данные.

Однако это приводит к тому, что элементы управления EDIT автоматически отображают имя своего окна, что вызывает эстетические проблемы (я не хочу, чтобы отображалось идентификатор).

Может ли кто-нибудь дать мне несколько указаний относительно наиболее подходящего способа идентификации оконных элементов управления, не отображая идентификатор пользователя?

Благодаря тонну.

  • 0
    AFAIR есть свойство, которое вы можете использовать для настройки отображаемого текста по умолчанию.
  • 0
    Если ваш идентификатор может быть числовым, злоупотребьте параметром HMENU из CreateWindow, в конечном итоге «упорядочив» истинный идентификатор (скажем, младшее слово) с вашим «идентификатором» (тогда, старшее слово)
Показать ещё 2 комментария
Теги:
user-interface
winapi

1 ответ

4
Лучший ответ

Диалоговые элементы управления Win32 не идентифицируются по имени, а вместо него - числовым. Когда вы создаете элемент управления с помощью CreateWindow/Ex(), вы можете использовать параметр hMenu для назначения ему ID:

Для дочернего окна hMenu указывает идентификатор дочернего окна, целочисленное значение, используемое элементом управления диалоговым окном для уведомления родителя о событиях. Приложение определяет идентификатор дочернего окна; он должен быть уникальным для всех дочерних окон с одним и тем же родительским окном.

Если вы создаете диалоговое окно с использованием ресурса диалога через CreateDialogIndirect() или CreateDialogParam(), вы назначаете идентификаторы в определениях CreateDialogParam() управления.

В любом случае, вы можете использовать GetDlgItem() чтобы получить HWND определенного элемента управления, если вы хотите напрямую его манипулировать, или использовать связанные функции, такие как GetDlgItemText(), GetDlgItemInt() и т.д. (И соответствующие им функции GetDlgItemInt()).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню