Есть, не моя, программа, написана на Borlande. У неё есть SDK, для написания плагинов, но в нём не предусмотрена возможность работы с Menu
Как мне в плагине(на MFC) перехватить переключение окон(они перевычисляют Меню), и добавить в нужных местах свои Меню, в том числе и контекстные
Заранее, спасибо!
Дмитрий Фризен.
31.10.04 22:07: Перенесено модератором из '.NET GUI' — AndrewVK
Hello, Fert!
F> Есть, не моя, программа, написана на Borlande. У неё есть SDK, F> для написания плагинов, но в нём не предусмотрена возможность работы с F> Menu Как мне в плагине(на MFC) перехватить переключение F> окон(они перевычисляют Меню), и добавить в нужных местах свои Меню, в F> том числе и контекстные
И чтож ты хочешь от бедных дотнетчиков? Мы люди темные в Дебилдерах и МФЦ ничего не понимаем
Это тебе в WinAPI надо.
Здравствуйте, GarryIV, Вы писали:
GIV>Hello, Fert!
F>> Есть, не моя, программа, написана на Borlande. У неё есть SDK, F>> для написания плагинов, но в нём не предусмотрена возможность работы с F>> Menu Как мне в плагине(на MFC) перехватить переключение F>> окон(они перевычисляют Меню), и добавить в нужных местах свои Меню, в F>> том числе и контекстные
GIV>И чтож ты хочешь от бедных дотнетчиков? Мы люди темные в Дебилдерах и МФЦ ничего не понимаем GIV>Это тебе в WinAPI надо.
GIV>WBR, Igor Evgrafov.
Здравствуйте, Fert, Вы писали:
F>Здравствуйте, GarryIV, Вы писали:
GIV>>Hello, Fert!
F>>> Есть, не моя, программа, написана на Borlande. У неё есть SDK, F>>> для написания плагинов, но в нём не предусмотрена возможность работы с F>>> Menu Как мне в плагине(на MFC) перехватить переключение F>>> окон(они перевычисляют Меню), и добавить в нужных местах свои Меню, в F>>> том числе и контекстные
В смысле переключение?
Может быть попробовать субклассировать окно, и как нить самому прорисовывать меню, какой нить CUSTOMDRAW.
Хотя все равно субклассировать придется в любом случае, как то же надо будет потом WM_COMMAND обработывать от своих пунктов меню.
GIV>>И чтож ты хочешь от бедных дотнетчиков? Мы люди темные в Дебилдерах и МФЦ ничего не понимаем GIV>>Это тебе в WinAPI надо.
GIV>>WBR, Igor Evgrafov.
F>Извини не в ту дверь вошёл
Здравствуйте, Carc, Вы писали:
C>В смысле переключение? C>Может быть попробовать субклассировать окно, и как нить самому прорисовывать меню, какой нить CUSTOMDRAW. C>Хотя все равно субклассировать придется в любом случае, как то же надо будет потом WM_COMMAND обработывать от своих пунктов меню.
Я это уже понял делаю так:
BOOL CMyPlagin::InitInstance()
{
...
CMyWnd* pWnd = new CMyWnd(); // class CMyWnd : public CWnd { ... }
m_pMainWnd = pWnd;
pWnd->SubclassWindow(CWnd::FindWindow("<classOfExeWindow>", NULL));
return TRUE;
}
void CMyPlagin:ExitInstance()
{
if ( m_pMainWnd )
m_pMainWnd->UnsubclassWindow();
}
И это работает(входит/выходит)
Проблемы начинаются, когда я пытаюсь прикрутить свои менюшки, типа
А это нормально, что ты создаешь свое меню локально, а потом его кому-то отдаешь? В деструкторе твоего объекта меню будет уничтожено (я имею ввиду виндовый объект, который HMENU описывается) — в результате хост твоего плагина и падает, имхо.
А>А это нормально, что ты создаешь свое меню локально, а потом его кому-то отдаешь? В деструкторе твоего объекта меню будет уничтожено (я имею ввиду виндовый объект, который HMENU описывается) — в результате хост твоего плагина и падает, имхо.
Да, я как-то упустил этот момент
Но почему GetMenuString не даёт строку
Здравствуйте, Fert, Вы писали:
F>Твоё последнее письмо слетело
Я его сам удалил: я там ерунду написал
F>И ещё GetMenuString(...) и GetMenuItemInfo(...) не возвращают имя менюшки
Если ты под XP работаешь, то если GetMenuItemInfo вернула FALSE — вызови GetLastError() и посмотри результат
Хотя я более чем уверен, будет что-то вроде "Неверный параметр"
F>А также можно ли наследовать CMyWnd от CFrameWnd или CMDIFrameWnd
F>Спасибо!
Это ты у меня спрашиваешь? Я ведь понятия не имею, к какой проге ты плагин пишешь