нужна помощь с типом оконного диалогового ресурса - PullRequest
0 голосов
/ 14 июня 2011

Я пишу программу для Windows (без mfc), и мне нужно выводить строку состояния оператору каждые несколько секунд или около того.Я пытался использовать расширенные текстовые поля, но после стольких часов он зависает.У кого-нибудь есть предложения по поводу того, что я могу использовать вместо этого?

Люди упоминали, что мои буферы могли быть исчерпаны.Я думал, что запланировал это.После того, как у меня появилось около 1000 строк, я бы взял первые 500 и удалил их, используя опции select и cut в полях расширенного текста.Я все еще сталкивался с той же проблемой.

Ответы [ 3 ]

2 голосов
/ 14 июня 2011

Этот вопрос представляется актуальным, и этот вопрос тоже.Но они не дают никаких конкретных рекомендаций по альтернативе расширенным текстовым полям.

Вы можете попробовать элемент управления Scintilla (scintilla.org), который, по-видимому, не имеет жестких ограниченийразмер текста.Имеет разрешительную лицензию.Он используется многими текстовыми редакторами, такими как Notepad ++, Notepad2, Code :: Blocks, FlashDevelop.Я не пробовал это лично, но там из документации выглядит легко использовать его в приложении Windows API.Конечно, это может быть излишним для ваших целей.

0 голосов
/ 14 июня 2011

Я закончил тем, что написал свой собственный элемент управления для этого, по сути дублируя окно вывода в Visual Studio. Это был успех, но в итоге получилось гораздо больше кода, чем я думал, когда начинал - я настоял на таких функциях, как автопрокрутка, когда курсор был на последней строке, выбор / копирование, полужирный текст и т. Д. Он был поддержан std::deque, поэтому я мог ограничить количество строк, сохраняемых для окна.

К сожалению, код принадлежит бывшему работодателю, поэтому я не могу поделиться им здесь.

0 голосов
/ 14 июня 2011

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

Рассматривали ли вы реализацию простого циклического буфера для содержимого текстового поля? Скажи только сообщения последнего часа. Вы могли бы вести отдельный файл журнала для истории, если оператору нужно было возвращаться во времени на несколько часов.

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