MFC/BCGP: обновить метку вкладки CEditView без изменения содержимого CEditView?

avatar
user3161924
1 июля 2021 в 18:16
42
2
0

Когда у меня есть приложение SDI Document-View MFC, которое использует CBCGPTabView в качестве основного представления, одной из вкладок является CEditView. Если я отправлю пользовательское сообщение производному классу CBCGPTabView и использую GetTabControl().SetTabLabel(), оно изменит не только метку вкладки, но и содержимое CEditView. Есть ли способ предотвратить это?

Источник
IInspectable
2 июля 2021 в 16:02
0

Какова ценность вашего пользовательского сообщения?

user3161924
2 июля 2021 в 21:47
0

на основе WM_APP

Ответы (2)

avatar
Flaviu_
4 июля 2021 в 15:13
0

Другой метод заключается в переопределении

virtual CString CBCGPMDIChildWnd::GetFrameText() const

И поставить/установить туда что нужно.

avatar
user3161924
1 июля 2021 в 18:16
0

На данный момент у меня есть обходной путь:

  // 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);
  }
}