2

我有 MFC SDI 应用程序。
它有功能区、状态栏、属性窗口、...

我需要将视图的客户区设为x % 16. 所以我不能调整整个窗口,但我需要调整大小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);
}
4

1 回答 1

3

处理这个WM_SIZE/OnSize为时已晚,因为到那时窗口已经调整了大小。改为使用ON_WM_WINDOWPOSCHANGING来监视窗口大小的更改并应用以下更改:

void CMyWnd::OnWindowPosChanging(WINDOWPOS* wpos)
{
    wpos->cx -= wpos->cx % 16;
    wpos->cy -= wpos->cy % 16;
    __super::OnWindowPosChanging(wpos);
}
于 2016-07-07T19:07:28.523 回答