当我有一个使用CBCGPTabView作为主视图的SDI Document-View MFC应用程序时,其中一个选项卡是CEditView。如果我向CBCGPTabView派生类发送自定义消息并使用GetTabControl().SetTabLabel(),它不仅会更改选项卡标签,还会更改CEditView的内容。有没有办法防止这种情况发生?
发布于 2021-07-02 02:16:22
这是我目前的变通方法:
// 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);
}
}发布于 2021-07-04 23:13:52
另一种方法是重写
virtual CString CBCGPMDIChildWnd::GetFrameText() const并在那里放置/设置您需要的内容。
https://stackoverflow.com/questions/68215133
复制相似问题