Как напечатать много строк формата в окно? - PullRequest
0 голосов
/ 05 мая 2011

После успешного решения этой проблемы как напечатать строку формата в окне , возникает другая проблема.

Если имеется много строк формата , какраспечатать их в окно?Например, ниже:

sprintf(buf, formatString-1...);
SendMessage(hwnd, WM_SETTEXT, NULL, (LPARAM)buf);
...
sprintf(buf, formatString-2...);
SendMessage(hwnd, WM_SETTEXT, NULL, (LPARAM)buf);
...
sprintf(buf, formatString-3...);
SendMessage(hwnd, WM_SETTEXT, NULL, (LPARAM)buf);
...

Обратите внимание, что только formatString-3 печатается в окне , а я хочу поместить их все в окно.Как это сделать? (PS: Пожалуйста, не используйте buf concatenate) Спасибо! ~

Ответы [ 2 ]

2 голосов
/ 05 мая 2011

Вы пытаетесь создать окно в стиле консоли или журнала, с несколькими строками текста, одна за другой?

Если это так, самый простой подход - выбрать элемент управления, который будет делать это длявы.Нечто подобное static (обычно используемое для меток) обычно полезно только для одной строки за раз.Если вы хотите отобразить более одной строки вывода, у вас есть два основных параметра:

  • Элемент управления Listbox: добавлять элементы в конец, используя LB_ADDSTRING.(Вы можете захотеть следовать этому с помощью LB_SETCURSEL или подобного, чтобы выбрать последний элемент, чтобы по мере добавления элементов в конец он прокручивался, чтобы показать последний элемент.)

  • Чтение-только управление многострочным редактированием: добавьте текст в конец, используя метод, описанный здесь на MSDN .Обратите внимание, что при таком подходе вам нужно указать «\ r \ n» самостоятельно для создания новой строки.

2 голосов
/ 05 мая 2011

Каждое WM_SETTEXT сообщение перезаписывает предыдущее. Вот почему вы наблюдаете только эффекты последнего сообщения.

Хотя вы заявляете, что не хотите объединять буфер перед отправкой сообщения WM_SETTEXT, это единственный вариант с WM_SETTEXT.

Если у вас есть элемент управления для редактирования, вы можете вставить текст, используя сообщение EM_REPLACESEL.

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