Настройка MFC c ++ / добавление текста в элемент управления richedit из рабочего потока

0

из основного потока я могу использовать переменные-члены так:

    CString updatetext;
    updatetext.Format(L"character length: %d\n", length );
    long nStart, nEnd;
    m_richeditcont.
    GetSel(nStart, nEnd);
    m_richeditcont.SetSel(nEnd, nEnd);
    m_richeditcont.ReplaceSel(updatetext);

однако без рабочего потока программа просто зависает. вы не можете использовать переменные-члены из рабочего потока, так как мне нужно обновить элемент управления richedit с текстом, хранящимся в updatetext из рабочего потока?

У меня нет никакого реального кода, приведенный выше код - всего лишь пример, я просто хочу знать, как я собираюсь добавить текст, хранящийся в updatetext, в элемент управления richedit из рабочего потока.

Теги:
multithreading
variables
text
mfc

1 ответ

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

Рабочий поток может отправлять данные в поток GUI с помощью PostMessage или SendMessage. Тогда поток GUI должен отвечать за изменение GUI. Смотрите FAQ 12 здесь:

http://vcfaq.mvps.org/mfc/index.htm

Рабочий поток должен выделять CString в куче, а затем отправлять указатель в lparam или wparam настраиваемого сообщения. Поток GUI возвращает указатель на CString * и обновляет элемент управления. Наконец, поток GUI удаляет CString из кучи.

  • 0
    +1 для Наконец, поток GUI удаляет CString из кучи. Совершенно важно !!
  • 0
    большое Вам спасибо.

Ещё вопросы

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