Здравствуйте, Kiper, Вы писали:
K>Разница в том, что из потока нельзя напрямую доставать окна. Вы можете прямо обращаться из потока только к окну, которое его породило. А по другому, через главное род. окно, и желательно без пойнтеров (т.е. использовать HWND) и желательно PostMessage()
А причина кака ?
обращение к HWND зависит от потоков ?
они же глобальны для системы ...
Здравствуйте, Serguei666, Вы писали:
A>>В MSDN есть статьи "First Aid for the Thread-Impaired: Using Multiple Threads with MFC" (MSJ December 1996) и "More First Aid for the Thread Impaired: Cool Ways to Take Advantage of Multithreading" (MSJ July 1997). Оч-чень рекомендую ознакомиться.
S>Спасибо, не буду, потому что не думаю, что я там найду что-то, чего я не знаю.
Правильно, это как раз та самая инструкция, которую нужно читать, когда уже ничего не помогает.
S>Именно. Речь об "any MFC objects". Т.е.в общем случае работать не будет, а в частных случаях — будет без проблем. Важно знать детали реализации, а без них сообщения типа того, что запостил Sasparella — бесполезны и бессмысленны.
S>Ага. Именно это я и говорю — в некоторых случаях все будет распрекрасно работать.
Наблюдал самолично, поэтому и посоветовал почитать. Да, скорее всего будет работать. Только где-то, когда-то, время от времени будет сбоить. И отловить эту проблему будет стоить много нервов и времени. Конечно для экстремальных программеров и искателей приключений это не помеха.
Здравствуйте, algol, Вы писали:
A>Правильно, это как раз та самая инструкция, которую нужно читать, когда уже ничего не помогает.
Мне не нужно читать. Я и так это знаю.
S>>Ага. Именно это я и говорю — в некоторых случаях все будет распрекрасно работать.
A>Наблюдал самолично, поэтому и посоветовал почитать. Да, скорее всего будет работать.
Только где-то, когда-то, время от времени будет сбоить.
Сутации "время от времени будет сбоить" не будет, потому что либо будет сразу надежно работать, либо будет сразу 100% не работать. Ведь в чем проблема? Проблема в том, что фунция CWnd::FromHandlePermanent() в другой цепочке будет возврашать NULL, а CWnd::FromHandle() будет возврашать отличный от главной цепочки результат. Если вы не используете эти две функции, или используете их вдумчиво — все будет работать.
A>И отловить эту проблему будет стоить много нервов и времени. Конечно для экстремальных программеров и искателей приключений это не помеха.
А еще это не помеха для опытных программеров, знающих многие тонкости реализации MFC