Сокрытие пункта меню в MFC

Я нашел что-то не так в вашем коде.

  1. У вас есть розетка для contentView. Это означает, что это представление уже добавлено в вашу иерархию представлений. Тогда в вашем commonInit() addSubview (contentView) 'делать неправильно.

  2. Результат Bundle.main.loadNibNamed("VerificationCodeView", owner: self, options: nil) не используется.

Вы можете использовать это для загрузки представления из пера:

let verificationCodeView = UINib(nibName: "VerificationCodeView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! VerificationCodeView

Если вы хотите получить экземпляр VerificationCodeView, напишите метод класса, как показано ниже.

class func instantiateFromNib() -> VerificationCodeView {

    let verificationCodeView = UINib(nibName: String(describing:self), bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! VerificationCodeView
    return verificationCodeView
}

Теперь, когда вам нужно это представление, просто получите его, как показано ниже:

let verificationCodeView = VerificationCodeView.instantiateFromNib()
9
задан Dana 9 December 2009 в 08:08
поделиться

2 ответа

Добавьте Обработчик Обновлений для своего пункта меню (использующий ON_UPDATE_COMMAND_UI).

Эта строка должна появиться в Вашей карте отображения сообщений:

  ON_UPDATE_COMMAND_UI(ID_MYMENUITEM, OnUpdateMyMenuItem)

В обработчике используйте этот код:

void CMainFrame::OnUpdateMyMenuItem(CCmdUI *pCmdUI)
{
  if (pCmdUI->m_pMenu!=NULL)
    pCmdUI->m_pMenu->DeleteMenu(pCmdUI->m_nID, MF_BYCOMMAND);
}
15
ответ дан 4 December 2019 в 11:44
поделиться

Или если Вы удаляете единственное использование пункта меню CMenu:: RemoveMenu

3
ответ дан 4 December 2019 в 11:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: