| 3484 | } |
| 3485 | |
| 3486 | void CMainFrame::ReloadMenu() |
| 3487 | { |
| 3488 | // set the menu of the main frame window |
| 3489 | UINT idMenu = IDR_MAINFRAME; |
| 3490 | CMergeApp *pApp = dynamic_cast<CMergeApp *> (AfxGetApp()); |
| 3491 | CMainFrame * pMainFrame = dynamic_cast<CMainFrame *> ((CFrameWnd*)pApp->m_pMainWnd); |
| 3492 | HMENU hNewDefaultMenu = pMainFrame->NewDefaultMenu(idMenu); |
| 3493 | HMENU hNewMergeMenu = pMainFrame->NewMergeViewMenu(); |
| 3494 | HMENU hNewImgMergeMenu = pMainFrame->NewImgMergeViewMenu(); |
| 3495 | HMENU hNewWebPageDiffMenu = pMainFrame->NewWebPageDiffViewMenu(); |
| 3496 | HMENU hNewDirMenu = pMainFrame->NewDirViewMenu(); |
| 3497 | if (hNewDefaultMenu != nullptr && hNewMergeMenu != nullptr && hNewDirMenu != nullptr) |
| 3498 | { |
| 3499 | // Note : for Windows98 compatibility, use FromHandle and not Attach/Detach |
| 3500 | CMenu * pNewDefaultMenu = CMenu::FromHandle(hNewDefaultMenu); |
| 3501 | CMenu * pNewMergeMenu = CMenu::FromHandle(hNewMergeMenu); |
| 3502 | CMenu * pNewImgMergeMenu = CMenu::FromHandle(hNewImgMergeMenu); |
| 3503 | CMenu * pNewWebPageDiffMenu = CMenu::FromHandle(hNewWebPageDiffMenu); |
| 3504 | CMenu * pNewDirMenu = CMenu::FromHandle(hNewDirMenu); |
| 3505 | |
| 3506 | CWnd *pFrame = CWnd::FromHandle(::GetWindow(pMainFrame->m_hWndMDIClient, GW_CHILD)); |
| 3507 | while (pFrame != nullptr) |
| 3508 | { |
| 3509 | if (pFrame->IsKindOf(RUNTIME_CLASS(CMergeEditFrame))) |
| 3510 | static_cast<CMergeEditFrame *>(pFrame)->SetSharedMenu(hNewMergeMenu); |
| 3511 | if (pFrame->IsKindOf(RUNTIME_CLASS(CHexMergeFrame))) |
| 3512 | static_cast<CHexMergeFrame *>(pFrame)->SetSharedMenu(hNewMergeMenu); |
| 3513 | if (pFrame->IsKindOf(RUNTIME_CLASS(CImgMergeFrame))) |
| 3514 | static_cast<CImgMergeFrame *>(pFrame)->SetSharedMenu(hNewImgMergeMenu); |
| 3515 | if (pFrame->IsKindOf(RUNTIME_CLASS(CWebPageDiffFrame))) |
| 3516 | static_cast<CWebPageDiffFrame *>(pFrame)->SetSharedMenu(hNewWebPageDiffMenu); |
| 3517 | else if (pFrame->IsKindOf(RUNTIME_CLASS(COpenFrame))) |
| 3518 | static_cast<COpenFrame *>(pFrame)->SetSharedMenu(hNewDefaultMenu); |
| 3519 | else if (pFrame->IsKindOf(RUNTIME_CLASS(CDirFrame))) |
| 3520 | static_cast<CDirFrame *>(pFrame)->SetSharedMenu(hNewDirMenu); |
| 3521 | pFrame = pFrame->GetNextWindow(); |
| 3522 | } |
| 3523 | |
| 3524 | CFrameWnd *pActiveFrame = pMainFrame->GetActiveFrame(); |
| 3525 | if (pActiveFrame != nullptr) |
| 3526 | { |
| 3527 | if (pActiveFrame->IsKindOf(RUNTIME_CLASS(CMergeEditFrame))) |
| 3528 | pMainFrame->MDISetMenu(pNewMergeMenu, nullptr); |
| 3529 | else if (pActiveFrame->IsKindOf(RUNTIME_CLASS(CHexMergeFrame))) |
| 3530 | pMainFrame->MDISetMenu(pNewMergeMenu, nullptr); |
| 3531 | else if (pActiveFrame->IsKindOf(RUNTIME_CLASS(CImgMergeFrame))) |
| 3532 | pMainFrame->MDISetMenu(pNewImgMergeMenu, nullptr); |
| 3533 | else if (pActiveFrame->IsKindOf(RUNTIME_CLASS(CWebPageDiffFrame))) |
| 3534 | pMainFrame->MDISetMenu(pNewWebPageDiffMenu, nullptr); |
| 3535 | else if (pActiveFrame->IsKindOf(RUNTIME_CLASS(CDirFrame))) |
| 3536 | pMainFrame->MDISetMenu(pNewDirMenu, nullptr); |
| 3537 | else |
| 3538 | pMainFrame->MDISetMenu(pNewDefaultMenu, nullptr); |
| 3539 | } |
| 3540 | else |
| 3541 | pMainFrame->MDISetMenu(pNewDefaultMenu, nullptr); |
| 3542 | |
| 3543 | // Don't delete the old menu |
nothing calls this directly
no test coverage detected