Здрасьте!
О сабже по порядку:
1. Кривые руки, т.к. в классах и ООП вообще я пока еще очень слабо разбираюсь плюс недостаток сведений по вопросу динамического создания меню.
2. Посмотревши и попробовавши примеры и приемы из прошлых топиков на эту тему на этом сайте, результат — не помогают.
3. Ситуация:
Есть приложение, которое подключает все существующие плагины и создает подпункты пункта "Инструменты"(mModules) главного меню. Главное меню и пункт верхнего уровня "Инструменты" нарисованы в дизайнере. Создает пункты следующий код:
void DrawMainMenu(PLUGIN_INFO * lpPlugInInfo, char * lpFullPath)
{
TMenuItem* mi = new TMenuItem(wndMain->mModules);
if(mi)
{
mi->Caption = lpPlugInInfo->lpName;
mi->Enabled=true;
mi->Checked=false;
mi->Default=false;
mi->Break=mbNone;
mi->Visible=true;
mi->RadioItem=false;
wndMain->mModules->Insert(1, mi);
mi->Tag=1;
//mi->OnClick = OnMenuItemClick;
}
return;
}
Обработчик:
void __fastcall TwndMain::OnMenuItemClick(TObject* Sender)
{
TMenuItem* mi = dynamic_cast<TMenuItem*>(Sender);
if(mi)
{
g_hCurrPlugIn=LoadLibrary(g_lpFullPath);
if (!g_hCurrPlugIn)
return;
DLLFormShowType DLLFormShow;
DLLFormShow=(DLLFormShowType)GetProcAddress(g_hCurrPlugIn,"DLLFormShow");
DLLFormShow(Application->Handle);
FreeLibrary(g_hCurrPlugIn);
g_hCurrPlugIn=NULL;
}
return;
}
Пуктик добавляется, все ОК, но...
ПРОБЛЕМА: как только я снимаю комментарии со строчки mi->OnClick = OnMenuItemClick, так получаю:
[C++ Error] main.cpp(233): E2451 Undefined symbol 'OnMenuItemClick', хотя в классе TwndMain этот метод описан.
Подскажите, в чем проблема??? Спасибо заранее. Артем