码迷,mamicode.com
首页 > 其他好文 > 详细

限制窗口拉伸范围改进——OnSizing

时间:2016-04-21 20:07:46      阅读:567      评论:0      收藏:0      [点我收藏+]

标签:

 之前用的GetMinMaxInfo,在VS2015中会导致:Report模式的CListCtrl随窗口拉伸时,表头无法绘制超过原大小的区域。其他版本和控件未测试,而OnSizing没有这问题。

但一开始在网上找了半天都是残缺的,那些人都没想想参数 fwSide (Forward Side)有没有用,最后我为了代码可读性找了半天,最终通过VS的自动补完找到了宏定义。

例程只限制了最小范围,但完全可以实现限制最大范围。

其中 MINI_WIDTH 、 MINI_HEIGHT 为自定义的最小范围, WMSZ_XXXXXX 表示你拉伸的起点方向(共八个)

void CMyDlg::OnSizing(UINT fwSide, LPRECT pRect)
{
    if (pRect->right - pRect->left < MINI_WIDTH) {
        if (fwSide == WMSZ_LEFT
            || fwSide == WMSZ_TOPLEFT
            || fwSide == WMSZ_BOTTOMLEFT) {
            pRect->left = pRect->right - MINI_WIDTH;
        }
        else {
            pRect->right = pRect->left + MINI_WIDTH;
        }
    }
    if (pRect->bottom - pRect->top < MINI_HEIGHT) {
        if (fwSide == WMSZ_TOP
            || fwSide == WMSZ_TOPLEFT
            || fwSide == WMSZ_TOPRIGHT) {
            pRect->top = pRect->bottom - MINI_HEIGHT;
        }
        else {
            pRect->bottom = pRect->top + MINI_HEIGHT;
        }
    }
    CDialogEx::OnSizing(fwSide, pRect);
}

 

限制窗口拉伸范围改进——OnSizing

标签:

原文地址:http://www.cnblogs.com/sssworld/p/5418187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!