Повторно использовать Edit Control как командное окно - PullRequest
0 голосов
/ 03 октября 2008

Это приложение с графическим интерфейсом (на самом деле MFC). Мне нужно командное окно с возможностью отображения подсказки, например:

Название любимой порнозвезды:

Пользователь должен иметь возможность вводить текст после приглашения, например:

Название любимой порнозвезды: Raven Riley

Но мне нужно запретить пользователю перемещать курсор в область подсказки. Пользователям также следует запретить возврат в приглашение, чтобы предотвратить следующее:

Rrraven Rrrileeey Ruuuulez !!! Название любимой порнозвезды:

Также необходимо контролировать выделение текста и так далее. И, наконец, у меня не должно возникнуть проблем с извлечением только текста, введенного пользователем (без текста подсказки).

Будет ли лучше создать свой собственный класс окна с нуля (т.е. наследовать от CWnd), или мне следует повторно использовать элемент управления Windows EDIT (т.е. наследовать от CEdit)?

Подобное окно команд можно увидеть в AutoCAD и Visual Studio (в режиме отладки).

Ответы [ 2 ]

3 голосов
/ 03 октября 2008

Я думаю, вам лучше создать подкласс CEdit и ограничить фильтрацию нажатий клавиш. Я полагаю, что сложная часть не позволяет пользователю переместить каретку в область приглашения, но вы, вероятно, можете написать некоторый код, чтобы убедиться, что каретка всегда отправляется туда, где она принадлежит (входная часть).

В любом случае, если вы действительно, действительно хотите реализовать свой собственный элемент управления (это не так сложно в конце концов), я рекомендую вам прочитать «техническую документацию» Джейкоба Навиа о том, как он создавал компилятор LCC и среду. На самом деле, похоже, что документы больше не в сети, но я уверен, что вы можете получить их по электронной почте (jacob@jacob.remcomp.fr).

Редактировать : Ваш предыдущий пример мне понравился больше. Держите это стильно, LOL:)

1 голос
/ 03 октября 2008

У меня было очень похожее требование, и я сделал именно то, что предложил Дэвидг; подклассы редактирования и отфильтрованные нажатия клавиш. На самом деле это был Qt, а не MFC, но принцип будет точно таким же.

Вы должны помнить, чтобы отфильтровать ключи, такие как home, а также left и backspace. Я только что проверил, переместит ли курсор в подсказку и проигнорирует ли нажатие клавиши.

Еще одна вещь, на которую нужно обратить внимание, это вставка многострочного текста, вам нужно будет выбрать, вставлять ли первую строку или все строки, добавляя подсказку во все строки после первой. При создании подкласса элемента управления вы получаете много поведения, которое не будет работать точно так, как вы этого хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...