求助 MFC中 picture控件怎样动态改变其大小和位置

[复制链接]
查看11 | 回复5 | 2021-1-27 05:21:03 | 显示全部楼层 |阅读模式
用鼠标来动态改变一个控件的大小位置比如要改变对话框内的一个按钮的大小和位置
派生一个按钮类CMyButton,响应WM_NCHITTEST消息
LRESULTCMyButton::OnNcHitTest(CPointpoint)
{
。。。。。。
if(!rect.PtInRect(pt))
{
if(pt.x=rect.bottom-nFrame)
{
returnHTBOTTOMLEFT;
}
elseif(pt.x=rect.right-nFrame&&pt.y=rect.right-nFrame&&pt.y>=rect.bottom-nFrame)
{
returnHTBOTTOMRIGHT;
}
elseif(pt.x=rect.bottom-nFrame)
{
returnHTBOTTOM;
}
elseif(pt.x>=rect.right-nFrame)
{
returnHTRIGHT;
}
}
else
{
returnHTCAPTION;
}
}
这个办法对按钮控件有效,对listbox控件有效,都能改变位置和大小
对picture控件一点效果也没有,既不能改变位置,也不能改变大小,请论坛高人帮忙指出原因
或者能提供其他方法能用鼠标改变picture控件的位置和大小

分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:21:03 | 显示全部楼层
picture控件是CStatic打开Notify属性
回复

使用道具 举报

千问 | 2021-1-27 05:21:03 | 显示全部楼层
勾上了Notify属性,还是不能移动不能调整大小
回复

使用道具 举报

千问 | 2021-1-27 05:21:03 | 显示全部楼层
voidCMyStatic1::OnMouseMove(UINTnFlags,CPointpoint)
{
//TODO:Addyourmessagehandlercodehereand/orcalldefault
staticCPointptLast;
if(MK_LBUTTON==nFlags)
{
CRectrc;
GetWindowRect(&rc);
ScreenToClient(&rc);
MapWindowPoints(GetParent(),&rc);
MoveWindow(rc.left+(point.x-ptLast.x),rc.top+(point.y-ptLast.y),rc.Width(),rc.Height());
}
else
{
ptLast=point;
CStatic::OnMouseMove(nFlags,point);
}
Invalidate();
//
//CStatic::OnMouseMove(nFlags,point);
}

回复

使用道具 举报

千问 | 2021-1-27 05:21:03 | 显示全部楼层
要改变大小用CRectTracker如:
classCMyButton:publicCButton,publicCRectTracker

回复

使用道具 举报

千问 | 2021-1-27 05:21:03 | 显示全部楼层
是不是还要把边框样式选上?
另外注意,是要从CStatic派生子类
还有picture控件有修改它的ID并映射到派生出来的子类上吧?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行