0
在MFC不应状态栏自动调整当父窗口更新?是否有丢失的设置,我需要使用来实现这一目标?CStatusBarCtrl自动调整大小
class Mainwindow {
public:
MainWindow() {
Create(NULL, _T("Main Window"));
}
afx_msg int OnCreate(LPCREATESTRUCT lp) {
// Status bar
CRect rc;
this->GetClientRect(&rc);
std::array<int, 3> sb = { rc.right/3,rc.right/3 * 2,-1 };
status_bar.Create(WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP, CRect(0, 0, 0, 0), this, IDS_STATUSBARCTRL);
status_bar.SetParts(3, sb.data());
status_bar.SetTipText(1, _T("Tooltip text"));
status_bar.SetText(_T("Left"), 0, SBT_POPOUT);
status_bar.SetText(_T("Middle"), 1, 0);
status_bar.SetText(_T("Right"), 2, 0);
return TRUE;
}
// This resizes the status bar fine, but shouldn't MFC handle it?
afx_msg void OnSize(UINT, int cx, int cy) {
status_bar.SendMessage(WM_SIZE, 0, 0);
}
DECLARE_MESSAGE_MAP()
private:
CStatusBarCtrl status_bar;
};
BEGIN_MESSAGE_MAP(MainWindow,CFrameWnd)
ON_WM_CREATE()
ON_WM_SIZE()
END_MESSAGE_MAP()
这个工作,但仅供参考,您必须要么完全删除'WM_SIZE'处理程序,并让MFC做的所有更新本身或致电'CFrameWnd的:筛上部分()'任何自定义调整大小后 – Ronnie