改变View的客户区
Change client area of View
我有 MFC SDI 应用程序。
它有功能区、状态栏、属性 windows、...
我需要将视图的客户区设置为 x % 16
。
所以我无法调整整个 window,但我需要调整 CMyView
的大小才能被 16 个像素整除。
有办法吗?
此代码无效:=(
void CMyView::OnSize(UINT nType, int cx, int cy)
{
cx -= cx % 16;
cy -= cy % 16;
CView::OnSize(nType, cx, cy);
RECT wr = { 0, 0, cx, cy };
AdjustWindowRect(&wr, WS_OVERLAPPEDWINDOW, FALSE);
}
在 WM_SIZE/OnSize
中处理此问题为时已晚,因为那时 window 已经调整了大小。请改用 ON_WM_WINDOWPOSCHANGING
来监视对 window 大小的更改并应用以下更改:
void CMyWnd::OnWindowPosChanging(WINDOWPOS* wpos)
{
wpos->cx -= wpos->cx % 16;
wpos->cy -= wpos->cy % 16;
__super::OnWindowPosChanging(wpos);
}
我有 MFC SDI 应用程序。
它有功能区、状态栏、属性 windows、...
我需要将视图的客户区设置为 x % 16
。
所以我无法调整整个 window,但我需要调整 CMyView
的大小才能被 16 个像素整除。
有办法吗?
此代码无效:=(
void CMyView::OnSize(UINT nType, int cx, int cy)
{
cx -= cx % 16;
cy -= cy % 16;
CView::OnSize(nType, cx, cy);
RECT wr = { 0, 0, cx, cy };
AdjustWindowRect(&wr, WS_OVERLAPPEDWINDOW, FALSE);
}
在 WM_SIZE/OnSize
中处理此问题为时已晚,因为那时 window 已经调整了大小。请改用 ON_WM_WINDOWPOSCHANGING
来监视对 window 大小的更改并应用以下更改:
void CMyWnd::OnWindowPosChanging(WINDOWPOS* wpos)
{
wpos->cx -= wpos->cx % 16;
wpos->cy -= wpos->cy % 16;
__super::OnWindowPosChanging(wpos);
}