Когда у меня есть приложение SDI Document-View MFC, которое использует CBCGPTabView
в качестве основного представления, одной из вкладок является CEditView
. Если я отправлю пользовательское сообщение производному классу CBCGPTabView
и использую GetTabControl().SetTabLabel()
, оно изменит не только метку вкладки, но и содержимое CEditView
. Есть ли способ предотвратить это?
MFC/BCGP: обновить метку вкладки CEditView без изменения содержимого CEditView?
1 июля 2021 в 18:16
42
2
Ответы (2)
4 июля 2021 в 15:13
Другой метод заключается в переопределении
virtual CString CBCGPMDIChildWnd::GetFrameText() const
И поставить/установить туда что нужно.
1 июля 2021 в 18:16
На данный момент у меня есть обходной путь:
// hack to work around ceditview getting its window contents changed
CView* pview=GetView(tabi);
if (pview->IsKindOf(RUNTIME_CLASS(CEditView))) {
CString strexistingtext;
pview->GetWindowText(strexistingtext);
// change label
tabctrl.SetTabLabel(tabi, strlabel);
// put back text
pview->SetWindowText(strexistingtext);
}
else {
// change label
tabctrl.SetTabLabel(tabi, strlabel);
}
}
Какова ценность вашего пользовательского сообщения?
на основе WM_APP