In MFC sollte eine Statusleiste nicht automatisch skaliert werden, wenn das übergeordnete Fenster aktualisiert wird Gibt es eine fehlende Einstellung, die ich verwenden muss, um dies zu erreichen?CStatusBarCtrl automatische Größenanpassung
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()
Dies funktioniert, aber nur als Referenz, haben Sie entweder die 'WM_SIZE' Handler vollständig zu entfernen und lassen Sie MFC die sich Updates alle tun oder rufen Sie' CFrameWnd :: OnSize() 'nach alle benutzerdefinierten komprimiert die Größe – Ronnie