Здравствуйте kaziboba, вы писали:
K>Хай всем. Как научить диалог получать OnUpdateCMDUI для батонов тулбара. K>Есть способ хуканья диалога, но мне этот способ совсем не нравиться.
попробуй вызывать апдей в ответ на WM_KICKIDLE
что именно вызывать, не помню, надо смотреть как это делает MFC
в обработчике OnIdle аппликации
Здравствуйте Willi, вы писали:
W>Здравствуйте kaziboba, вы писали:
K>>Хай всем. Как научить диалог получать OnUpdateCMDUI для батонов тулбара. K>>Есть способ хуканья диалога, но мне этот способ совсем не нравиться.
W>попробуй вызывать апдей в ответ на WM_KICKIDLE W>что именно вызывать, не помню, надо смотреть как это делает MFC W>в обработчике OnIdle аппликации
Получилось! В обработчике WM_KICKIDLE вызываешь
OnUpdateCmdUI((CFrameWnd*)this, (BOOL)TRUE) у тулбара. Нашел в мсдн пример, там делается
приблизительно также. Тока не понятно, почему в функции первый параметр типа CFrameWnd*, если тудыть можно и диалог сунуть???
Здравствуйте kaziboba, вы писали:
K>Здравствуйте Willi, вы писали:
W>>Здравствуйте kaziboba, вы писали:
K>>>Хай всем. Как научить диалог получать OnUpdateCMDUI для батонов тулбара. K>>>Есть способ хуканья диалога, но мне этот способ совсем не нравиться.
W>>попробуй вызывать апдей в ответ на WM_KICKIDLE W>>что именно вызывать, не помню, надо смотреть как это делает MFC W>>в обработчике OnIdle аппликации
K>Получилось! В обработчике WM_KICKIDLE вызываешь K>OnUpdateCmdUI((CFrameWnd*)this, (BOOL)TRUE) у тулбара. Нашел в мсдн пример, там делается K>приблизительно также. Тока не понятно, почему в функции первый параметр типа CFrameWnd*, если тудыть можно и диалог сунуть???
:)
Поздравляю
А параметр такой, я думаю, в силу исторических причин.
Никто не думал что ты будешь использовтаь эту фичу в диалоге.
Ну и понятно никто ничего не гарантирует :)
Тут есть одни грабли.
Этот способ не работает если тулбар вставлять в наследника от COlePropertyPage
Ох и намучился я с ними...
Здравствуйте Willi, вы писали:
W>Здравствуйте kaziboba, вы писали:
K>>Здравствуйте Willi, вы писали:
W>>>Здравствуйте kaziboba, вы писали:
K>>>>Хай всем. Как научить диалог получать OnUpdateCMDUI для батонов тулбара. K>>>>Есть способ хуканья диалога, но мне этот способ совсем не нравиться.
W>>>попробуй вызывать апдей в ответ на WM_KICKIDLE W>>>что именно вызывать, не помню, надо смотреть как это делает MFC W>>>в обработчике OnIdle аппликации
K>>Получилось! В обработчике WM_KICKIDLE вызываешь K>>OnUpdateCmdUI((CFrameWnd*)this, (BOOL)TRUE) у тулбара. Нашел в мсдн пример, там делается K>>приблизительно также. Тока не понятно, почему в функции первый параметр типа CFrameWnd*, если тудыть можно и диалог сунуть???
W>:) W>Поздравляю
W>А параметр такой, я думаю, в силу исторических причин. W>Никто не думал что ты будешь использовтаь эту фичу в диалоге. W>Ну и понятно никто ничего не гарантирует :)
W>Тут есть одни грабли. W>Этот способ не работает если тулбар вставлять в наследника от COlePropertyPage W>Ох и намучился я с ними...
Здравствуйте kaziboba, вы писали:
W>>Тут есть одни грабли. W>>Этот способ не работает если тулбар вставлять в наследника от COlePropertyPage W>>Ох и намучился я с ними...
K>А почему не работает?
Так я и знал :)
А не приходит WM_KICKIDLE и все тут.
По вопросам почему не приходит WM_KICKIDLE обращаться по адресу:
One Microsoft Way
Redmond, WA 98052-6399
Telephone: (425) 882-8080
Здравствуйте Willi, вы писали:
W>Здравствуйте kaziboba, вы писали:
W>>>Тут есть одни грабли. W>>>Этот способ не работает если тулбар вставлять в наследника от COlePropertyPage W>>>Ох и намучился я с ними...
K>>А почему не работает?
W>Так я и знал :) W>А не приходит WM_KICKIDLE и все тут. W>По вопросам почему не приходит WM_KICKIDLE обращаться по адресу: W>One Microsoft Way W>Redmond, WA 98052-6399 W>Telephone: (425) 882-8080
W>:)
А я заметил такую вешь — если диалог немодальный, создается из длл, и главное окно — MFC, то при подводе мыши к тулбару все моментально летит в access viilation. если же главного окна нет (например, диалог запускается с помощью runDLL32), то все нормально работает.
Глюк воспроизводим, могу даже сорсы прислать, (если найду, ибо давно это было... но побороть так и не смог.)