И, все-таки,
в оконном варианте приложения этот самый this указывает не на объект класса MyIDispatch, а на объект какого-то другого класса? Если да, то на какой?
вот смотрите. Есть нестатическая функция MyIDispatch::Advise() (иначе this не работает), внутри которой находится наша строчка. Кстати, текст функции почти полностью в моём первом коде. Поскольку this вызывается внутри этой функции, то он автоматически указывает на класс MyIDispatch, с методом которого мы работаем, и никак иначе. Потому что вызвать в консоли нестатическую функцию мы можем только как метод объекта. Соответственно this и является этим объектом.
В оконном - не знаю, но отладка мне показала, что this является parent-объектом по отношению к IDispatch, т.е. содержит его. Выходит, что this - это само приложение. Старше ничего нету
И почему-то в консольном варианте он начинает выдавать ошибку. Поэтому я и спросил в своём первом вопросе: нельзя ли как-то заменить this? Найти альтернативу? Указатель GUID на приложение? Если такое есть - я не знаю. Ведь приложения, по сути, ещё нет.
-- Ср ноя 28, 2012 00:59:40 --Отладка показала, что разница между this в консольном и оконном варианте заключается в том, что в оконном варианте кроме IDispatch, this ещё содержит:
- указатель окна оконного приложения;
- переменные инициализации;
- прочие переменные, связанные с оконным интерфейсом.
Кстати, в этом может быть ключ к решению проблемы! Попробую их создать искусственно в консоли. Странно, почему он в консольном варианте не содержит переменные инициализации.... может в этом проблема?