Отвечу на второй вопрос. А>2. Если один поток вызвал SendMessage, а второй в этот момент что-то делает, то поток-отправитель вынужден ждать, когда поток-получатель обработает это синхронное сообщение. По словам Рихтера, в этот момент поток отправитель еще и может что-то делать — как это может быть? Что такое происходит в SendMessage, что позволяет потоку-отправителю еще и какие-то сообщения обрабатывать????
Обрабатываются так называемые Nonqueued Messages, т.е. сообщения, реально не помещаемые в очередь сообщений, а напрмямую попадающие в оконную процедуру.