Привет All
назрел фундаментальный вопрос, который, к содалению, весьма мало где освещается, даже правильнее сказать, за полдня поиска я не нашел, где он хорошо освещается вовсе.
Предположим, у нас есть некий кастомный UI контрол, например, список на основе ListCtrl в режиме ownerdata плюс некий контейнер для данных плюс API для доступа к этим данным.
И есть отдельный поток, который через API диалога, содержащего этот контрол, к нему обращается.
Соответственно, вопросы:
1. Как я понимаю, а ATL/WTL никаких механизмов синхронизации потоком с обработкой сообщений, кроме того, что предоставляе SendMessage нет. Поэтому, насколько правильно будет синхронизировать доступ только к контейнеру данных листконтрола, покаав наружу "прямой" API для доступа к нему? При этом придется следить, чтобы в залоченных кусках не было обращений к самому списку и прочим SendMessage. Есть ли при этом какие-нибудь подводные камни, например, контрол начинает отрисовываться с одним набором данных, и заканчивает уже с другим набором, и как их можно избежать?
2. Является ли более "идеологически правильным" весь внешний API контрола заворачивать при помощи SendMessage()/add message handler, сваливая всю работу по синхронизаии на нее? Почему в таком случае, в некоторых WTL котролах наружу торчит незавернутый API, и как предполагается решать вопрос с синхронизацией там?