现在有一个不规则的对话框窗体,并且也没有resize-border,问如何改变它的大小?

madmanahong 2007-08-01 10:12:23
我用setwindowrgn创建的,并且也没有resize-border,我现在想改变的大小,问如何去做?我看过有的软件就是这样。realone等


我找了一些例子,都是自己计算的。我想问问有没有好方法?


我现在是在OnNcHitTest中可以绘制方向鼠标,但是下一步我就不知道如何去做了
非常感谢!!!

UINT CPlayListDlg::OnNcHitTest(CPoint point)
{
//
CRect rtclient;
GetClientRect(&rtclient);

ScreenToClient(&point);

/* 得到边角的8个resize区域 */
CRect lefttop(0, 0, 5, 5);
CRect top(5, 0, rtclient.Width()-5, 5);
CRect righttop(rtclient.Width()-5, 0, rtclient.Width(), 5);
CRect right(rtclient.Width()-5, 5, rtclient.Width(), rtclient.Height()-5);
CRect bottomright(rtclient.Width()-5, rtclient.Height()-5, rtclient.Width(), rtclient.Height());
CRect bottom(5, rtclient.Height()-5, rtclient.Width()-5, rtclient.Height());
CRect bottomleft(0, rtclient.Height()-5, 5, rtclient.Height());
CRect left(0, 5, 5, rtclient.Height()-5);


if (lefttop.PtInRect(point)) {
return HTTOPLEFT;
} else if (top.PtInRect(point)) {
return HTTOP;
} else if (righttop.PtInRect(point)) {
return HTTOPRIGHT;
} else if (right.PtInRect(point)) {
return HTRIGHT;
} else if (bottomright.PtInRect(point)) {
return HTBOTTOMRIGHT;
} else if (bottom.PtInRect(point)) {
return HTBOTTOM;
} else if (bottomleft.PtInRect(point)) {
return HTBOTTOMLEFT;
} else if (left.PtInRect(point)) {
return HTLEFT;
}

return CDialog::OnNcHitTest(point);
}
...全文
172 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
madmanahong 2008-10-09
  • 打赏
  • 举报
回复
最好的方法是模拟windows消息,今天来结贴,顺便回复一下。
madmanahong 2007-08-02
  • 打赏
  • 举报
回复
WM_GETMINMAXINFO 为什么我收不到???????????
madmanahong 2007-08-02
  • 打赏
  • 举报
回复
?
madmanahong 2007-08-01
  • 打赏
  • 举报
回复
你的意思就是mouse动的时候,检测mouse的偏移,从而计算新的窗体大小,setwindowpos?

有没有比较简单的resize方法?
sxcong 2007-08-01
  • 打赏
  • 举报
回复
不规则窗口,需要在OnErashBKGround里面绘吧,那Mouse动的时候,MoveWindow就可以了,或SetWindowsPos什么的。绘的时候GetClientRect(&rtclient),根据这个Rect得到你的RGN,
这样不停的重绘。
试试是否可行

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧