Как удалить кнопку справки по умолчанию в CPropertySheet в MFC?

Я использую класс CPropertySheet для своего дизайна в приложении MFC, обычно в CPropertySheet было бы 4 кнопки по умолчанию.. Я хочу скрыть / удалить кнопку HELP.. Я попробовал следующее.. но оно не работает / ни один не отвечает.. Я если бы это было написано в моем классе CPropertyPage, есть ли другой способ...

m_psh.dwFlags & = ~ PSH_HASHELP;

5 ответов

Решение
// Destroy the Help button
CButton *btnHelp;

btnHelp = reinterpret_cast<CButton *>(GetDlgItem(IDHELP));
btnHelp->DestroyWindow();

Страницы свойств также имеют HASHELP флаг, который должен быть очищен. Следующий код в конструкторе листа свойств должен работать:

// After the last AddPage() call:
m_psh.dwFlags &= ~PSH_HASHELP;
for(int i=0; i<GetPageCount(); ++i)
    GetPage(i)->m_psp.dwFlags &= ~PSP_HASHELP;

Кроме того, можно также изменить m_psp пометка для каждой отдельной страницы перед вызовом AddPage():

m_psh.dwFlags &= ~PSH_HASHELP;
page1.m_psp.dwFlags &= ~PSP_HASHELP;
AddPage(&page1);
// ...

http://msdn.microsoft.com/de-de/library/37k4h0bh(v=vs.80).aspx

Вы должны удалить флаг с листа и всех страниц...

mySheet.m_psh.dwFlags &= ~PSH_HASHELP;
page1.m_psp.dwFlags &= ~PSP_HASHELP;
page2.m_psp.dwFlags &= ~PSP_HASHELP;

...

Позаботьтесь о разнице: m_psh против m_psp и PSH_HASHELP против PSP_HASHELP

Перейдите к основному файлу cpp вашего проекта (где определено theApp).
Удалить эту строку: ON_COMMAND(ID_HELP, CWinApp::OnHelp)

Адитья Паланки

Это должно сработать:

Переопределите метод OnNotify класса, производного от PropertySheet, запишите в него следующий код

CWnd *hwnd = GetDlgItem(IDHELP); hwnd->ShowWindow(SW_HIDE);

Другие вопросы по тегам