親ウィンドウが更新されたときに、MFCがステータスバーのサイズを自動的に変更しないようにするにはどうすればいいですか?ただ、CFrameWndのクラス内(なんてこった、私のデバッガは、現時点でステップ実行するために取得することはできません)...CStatusBarCtrl自動サイズ変更
をMFCコードをスキャン
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の:: OnSize関数() 'の後に任意のカスタムサイズ変更を行うようにするのどちらか持っています – Ronnie