mfc setwindowpos()改变按钮的位置?
时间:2011-11-25
来源:互联网
首先我定义了一个CButton的基类CCongBtn,
画一个按钮。
void CCongBtn::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CRect largerect;
GetWindowRect(&largerect);
GetDlgItem(IDC_BUTTON1)->SetWindowPos(NULL,largerect.left+10,largerect.top+10,0,0,
SWP_NOZORDER | SWP_NOSIZE);
CButton::OnMouseMove(nFlags, point);
}
为什么不能实现按钮的移动呢
作者: wdchensicong 发布时间: 2011-11-25
但如果是我,我可能这么做了:在父窗体的OnMouseMove里判断鼠标位置是不是到了按钮区域里,如果是,调用
GetDlgItem(IDC_BUTTON1)->SetWindowPos(...)
作者: accsoar 发布时间: 2011-11-25
是CCongBtn继承CButton吧。
你移动CCongBtn对吧。你的目前CRect应该是相对于它的父窗口而言的。
GetDlgItem(IDC_BUTTON1)->SetWindowPos(NULL,largerect.left+10,largerect.top+10,0,0,
SWP_NOZORDER | SWP_NOSIZE);
这里差不多
GetParent()->SetWindowPos(NULL,largerect.left+10,largerect.top+10,0,0,
SWP_NOZORDER | SWP_NOSIZE);
作者: oldmtn 发布时间: 2011-11-25
2:SetWindowPos
X
[in] Specifies the new position of the left side of the window, in client coordinates.
Y
[in] Specifies the new position of the top of the window, in client coordinates.
作者: dahaiI0 发布时间: 2011-11-25
if ((point.x>=m_Rect.left ||point.x <= m_Rect.right) && (point.y>=m_Rect.top ||point.y<=m_Rect.bottom)) { GetDlgItem(IDC_BUTTON1)->SetWindowPos(NULL,m_Rect.left+rand()%10,m_Rect.top+rand()%10,0,0, SWP_NOZORDER | SWP_NOSIZE); }
C/C++ code
GetDlgItem(IDC_BUTTON1)->GetClientRect(m_Rect); ClientToScreen(m_Rect);
作者: shen_wei 发布时间: 2011-11-25
作者: wangweixu520 发布时间: 2011-11-25
额,不知道你重绘没得呢? 重绘的时候重绘2个矩形区域就好了,一个当前矩形区域,一个将要移到的另外一个巨型区域!
我知道这个方法,现在就是想用setwindowpos改变按钮的位置
作者: wdchensicong 发布时间: 2011-11-25
不知道为什么……
但如果是我,我可能这么做了:在父窗体的OnMouseMove里判断鼠标位置是不是到了按钮区域里,如果是,调用
GetDlgItem(IDC_BUTTON1)->SetWindowPos(...)
我判断了,测试的时候,我在函数一开始定义了一个messagebox(),用它来输出一个ok。运行的时候,每次都会弹出这个box,但是程序还是会死。
作者: wdchensicong 发布时间: 2011-11-25
GetDlgItem的作用是在当前所在的对话框或是父窗口上找到ID为IDC_BUTTON1的子控件,你这段代码写在按钮类当中,它会去找这个按钮上的子控件,而你的按钮窗口上根本就没有子窗口。
作者: wltg2001 发布时间: 2011-11-25
作者: dingxz105090 发布时间: 2011-11-25
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28