MFC对话框,拖动Button控件,交换两个控件的位置

ma_anjun 2014-12-11 10:37:37
目前实现了button可以自由拖动,方法是新写了一个类继承CButton类,然后重写了消息函数LButtondown、LButtonUp、MouseMove、WindowPosChanging。用create动态创建了两个Button,现在想拖动Button,当移动到另外一个Button的区域,则交换两个button的的位置。问题是怎么实现两个Button位置交换?是在对话框类中实现还是在新写的控件类中实现?
...全文
470 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lis2012 2014-12-17
  • 打赏
  • 举报
回复
引用 7 楼 ma_anjun 的回复:
[quote=引用 6 楼 lis2012 的回复:] 在对话框中声明一个容器类来存放所有的按钮对象,移动的时候,被移动按钮可以获取到这个容器并比较自身与容器中各按钮的位置关系,找到要对调的控件对象,然后通过movewindow来实现最后的移动操作,其实如果需要动态效果还需要其他控件来协助
动态效果需要什么控件呢?能否稍微详细点,3Q![/quote] 从cwnd类继承,重写其中的onpaint()函数及mouse消息函数
jacksonfan 2014-12-16
  • 打赏
  • 举报
回复
引用 4 楼 ma_anjun 的回复:
[quote=引用 3 楼 jacksonfan 的回复:] 先取得2个区域范围,当到达另外一个区域时SetWindowPos(),重置2个按钮的位置 或者,重置2个按钮的Caption,看起来就像是对调
如果每个Button都有自己的消息处理函数,重置Button的Caption不行哦。[/quote] 那就SetWindowPos(),重置2个按钮的位置
ma_anjun 2014-12-16
  • 打赏
  • 举报
回复
引用 6 楼 lis2012 的回复:
在对话框中声明一个容器类来存放所有的按钮对象,移动的时候,被移动按钮可以获取到这个容器并比较自身与容器中各按钮的位置关系,找到要对调的控件对象,然后通过movewindow来实现最后的移动操作,其实如果需要动态效果还需要其他控件来协助
动态效果需要什么控件呢?能否稍微详细点,3Q!
lis2012 2014-12-15
  • 打赏
  • 举报
回复
在对话框中声明一个容器类来存放所有的按钮对象,移动的时候,被移动按钮可以获取到这个容器并比较自身与容器中各按钮的位置关系,找到要对调的控件对象,然后通过movewindow来实现最后的移动操作,其实如果需要动态效果还需要其他控件来协助
fengswd 2014-12-15
  • 打赏
  • 举报
回复
MoveWindow和SetWIndowPos都可以实现。首先要获得两个按钮窗口在客户区的位置,然后当1按钮移动到2按钮上时,将按钮2的窗口移动到1的位置,然后将按钮1放在按钮2的位置即可。
ma_anjun 2014-12-15
  • 打赏
  • 举报
回复
引用 3 楼 jacksonfan 的回复:
先取得2个区域范围,当到达另外一个区域时SetWindowPos(),重置2个按钮的位置 或者,重置2个按钮的Caption,看起来就像是对调
如果每个Button都有自己的消息处理函数,重置Button的Caption不行哦。
jacksonfan 2014-12-11
  • 打赏
  • 举报
回复
先取得2个区域范围,当到达另外一个区域时SetWindowPos(),重置2个按钮的位置 或者,重置2个按钮的Caption,看起来就像是对调
浩南_哥 2014-12-11
  • 打赏
  • 举报
回复

可以这样给每个button限定个区域在区域内自由活动。
hubo86915531 2014-12-11
  • 打赏
  • 举报
回复
对话框实现。
资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 在 Windows 编程中,MFC(Microsoft Foundation Classes)是一个强大的 C++ 库,用于开发基于 Windows 的应用程序。本教程将详细介绍如何使用 MFC 实现一个功能:通过 Button 控件打开本地资源管理器,让用户选择照片,并将所选照片显示在 Picture 控件中。 首先,在 Visual Studio 中创建一个基本的 MFC 应用程序。选择“新建项目”->“MFC”->“MFC 应用程序”,并填写项目名称(如“FirstMFC”)。创建项目后,Visual Studio 会自动生成一系列基础文件,包括主对话框类、框架窗口类以及相应的头文件和源代码文件。 接下来,在主对话框类(如CFirstMFCDlg.h和CFirstMFCDlg.cpp)中,添加一个 Button 控件和一个 Picture 控件。在对话框资源编辑器中,将这两个控件拖动对话框上,并分别设置它们的 ID(例如IDC_OPEN_BUTTON和IDC_PICTURE)。Button 控件用于触发打开文件的事件,而 Picture 控件用于显示图片。 在CFirstMFCDlg.cpp中,找到 Button 控件的点击事件处理函数ON_BN_CLICKED(IDC_OPEN_BUTTON, &CFirstMFCDlg::OnBnClickedOpenButton)。在该函数中实现打开文件对话框的功能: CFileDialog用于创建文件对话框,DoModal()方法显示对话框。如果用户选择了文件并点击“打开”,则返回 IDOK。获取文件路径后,调用ShowImageInPictureControl函数来显示图片。 接下来,定义ShowImageInPictureContr

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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