Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Главное меню приложения. Контроль видимости


Автор: gorby 2.4.2008, 16:22
У меня многооконное  приложение на базе класса CWinApp, и  CMDIFrameWnd.
Мне нужно скрывать и делать видимым главное меню.

Я пытался использовать функцию.
pMainFrame->SetMenuBarState(AFX_MBS_HIDDEN);
Меню исчезает. 

Но если его нужно снова включить, то не получается сделать меню видимым,
использую вызов pMainFrame->SetMenuBarState(AFX_MBS_VISIBLE);


Кроме того, после открытия файла, меню снова появляется.

Автор: Earnest 2.4.2008, 17:45
A что это за функция такая? В 2003 студии такой нет... Если она появилась позже, приведи ее код (или сам посмотри)

Добавлено через 49 секунд
Как предположение, попробуй после VISIBLE еще сделать SetWindowPos с флагом SWP_FRAMECHANGED

Автор: gorby 4.4.2008, 15:50
Код

BOOL CFrameWnd::SetMenuBarState(DWORD dwState)
{
    ENSURE_ARG(dwState == AFX_MBS_VISIBLE ||
                dwState == AFX_MBS_HIDDEN);

    if (m_dwMenuBarState == dwState)
    {
        return FALSE;
    }

    if (dwState == AFX_MBS_VISIBLE)
    {
        OnShowMenuBar();
        ::SetMenu(m_hWnd, m_hMenu);
    }
    else
    {
        m_hMenu = ::GetMenu(m_hWnd);
        OnHideMenuBar();
        ::SetMenu(m_hWnd, NULL);
    }

    m_dwMenuBarState = dwState;
    return TRUE;
}

Я использую VS2008

Цитата

Как предположение, попробуй после VISIBLE еще сделать SetWindowPos с флагом SWP_FRAMECHANGED 

Earnest, спасибо за совет попробую.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)