如何在纯进度条的窗体上按下鼠标能够拖动窗体

iceofwater 2017-11-13 02:17:53
现在的界面是只有一个进度条,窗体的大小也就是进度条的大小,现在我想在进度条上按下鼠标左键,能够拖动这个进度条,想拖哪就拖哪
我在用OnNcHitTest方式时发现只能实现鼠标按下的区域在窗体上,才能响应,但是在进度条上则不会响应
所以发帖请教各位大神,如何在进度条上按下鼠标左键能够拖动这个窗体,谢谢!
...全文
302 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
iceofwater 2017-11-20
  • 打赏
  • 举报
回复
引用 9 楼 schlafenhamster 的回复:
5 楼代码 没问题,就是 在 TranslateMessage 前 PreTranslateMessage 中 截获 WM_MOUSEMOVE 这样 WM_MOUSEMOVE 就不会到 进度条 控件中去
问题搞定了,我没有采用这些方法,我是重新写了个CProgressCtrl类,然后在鼠标左键按下的事件中,给父窗体标题栏发送OnNcHitTest的消息,就能够实现拖动了,能够达到效果,不过也感谢给了我灵感。
schlafenhamster 2017-11-16
  • 打赏
  • 举报
回复
while (GetMessage (&msg, NULL, 0, 0)) { if(!PreTranslateMessage (&msg)) TranslateMessage (&msg) ; DispatchMessage (&msg) ; }
schlafenhamster 2017-11-16
  • 打赏
  • 举报
回复
如果是 win32 工程

BOOL PreTranslateMessage(MSG *pMsg)
{
static POINT ptLast;
	// TODO: Add your specialized code here and/or call the base class
	if(pMsg->message==WM_MOUSEMOVE)
	{
		if(MK_LBUTTON==pMsg->wParam)
		{
			RECT rc;
			GetWindowRect(pMsg->hwnd,&rc);// desk
			MoveWindow(pMsg->hwnd, rc.left+(pMsg->pt.x-ptLast.x), rc.top+(pMsg->pt.y-ptLast.y),
				       rc.right-rc.left, rc.bottom-rc.top, TRUE);
			ptLast=pMsg->pt;// screen coord
		}
		else
		{
			ptLast=pMsg->pt;// screen coord
		}
		return TRUE;
	}
	return FALSE;
}
调用处 while (GetMessage (&msg, NULL, 0, 0)) { if(!PreTranslateMessage (&msg)) TranslateMessage (&msg) ; DispatchMessage (&msg) ; }
schlafenhamster 2017-11-16
  • 打赏
  • 举报
回复
5 楼代码 没问题,就是 在 TranslateMessage 前 PreTranslateMessage 中 截获 WM_MOUSEMOVE 这样 WM_MOUSEMOVE 就不会到 进度条 控件中去
iceofwater 2017-11-16
  • 打赏
  • 举报
回复
引用 3 楼 schlafenhamster 的回复:
"能够拖动这个进度条,想拖哪就拖哪" 是拖动只有一个进度条的窗口,窗口有没有标题栏 ?
是的,这个窗口只有进度条,并且窗口就只有进度条这么大,因为明显就只能拖动这个进度条,才能拖动窗体啊
iceofwater 2017-11-16
  • 打赏
  • 举报
回复
引用 2 楼 zgl7903 的回复:
建议从 CSliderCtrl 下手
这个有用吗?
iceofwater 2017-11-16
  • 打赏
  • 举报
回复
引用 1 楼 dingxz105090 的回复:
方法1:子类化进度条控件,在其点击事件中设定为点击了父窗体 方法2:不用任何控件,直接在窗体上绘制进度,想怎么画就怎么画,不影响点击和拖动
有点不太懂得怎么实现啊
schlafenhamster 2017-11-14
  • 打赏
  • 举报
回复
MFC 代码,

BOOL CDIDlg::PreTranslateMessage(MSG* pMsg) 
{
static CPoint ptLast;
	// TODO: Add your specialized code here and/or call the base class
	if(pMsg->message==WM_MOUSEMOVE)
	{
		if(MK_LBUTTON==pMsg->wParam)
		{
			CRect rc;
			GetWindowRect(&rc);// screen coord
			MoveWindow(rc.left+(pMsg->pt.x-ptLast.x), rc.top+(pMsg->pt.y-ptLast.y), rc.Width(), rc.Height());
			ptLast=pMsg->pt;// screen coord
		}
		else
		{
			ptLast=pMsg->pt;// screen coord
		}
		return TRUE;
	}
	return CDialog::PreTranslateMessage(pMsg);
}
Eleven 2017-11-14
  • 打赏
  • 举报
回复
你是想用鼠标拖动进度条,改变进度条的进度,还是拖得进度条移动到其它位置,而不改变进度?
schlafenhamster 2017-11-13
  • 打赏
  • 举报
回复
"能够拖动这个进度条,想拖哪就拖哪" 是拖动只有一个进度条的窗口,窗口有没有标题栏 ?
zgl7903 2017-11-13
  • 打赏
  • 举报
回复
建议从 CSliderCtrl 下手
凌乱哥 2017-11-13
  • 打赏
  • 举报
回复
方法1:子类化进度条控件,在其点击事件中设定为点击了父窗体 方法2:不用任何控件,直接在窗体上绘制进度,想怎么画就怎么画,不影响点击和拖动
本资源是visual c++ 程序开发范例宝典的随书CD源码,由于本人的上传文件大小受限,所以只能一部分一部分的上传。这一部分主要是窗体与界面设计部分。上传的资源里面共有42个例程,考虑到文件大小问题,本人把例程里面的debug和release目录都清空了,如果要看实际效果需要重新运行一下才可以。这些例程主要是:1、菜单应用实例,包括:在系统菜单中添加菜单项、带图标的程序菜单、根据表中数据动态生成菜单、浮动菜单、在控件上单击右键弹出菜单、个性化的弹出菜单、任务栏托盘弹出菜单。 2、工具栏应用实例,包括:带背景的工具栏、带图标的工具栏、带下拉菜单的工具栏、可调整按钮位置的工具栏、浮动工具栏、根据表中数据动态生成工具栏、具有提示功能的工具栏。3、状态栏应用实例,包括:带进度条的状态栏、动画效果的状态栏、滚动字幕的状态栏。4、导航界面应用实例,包括:Outlook导航界面、树状导航界面、按钮导航界面、类QQ导航菜单。5、界面窗体应用实例,包括:背景为渐变色的程序界面、椭圆形的程序界面、自绘窗体界面、类似windows XP的程序界面、窗体融合技术、限制对话框最大时窗口大小。6、多媒体宣传光盘应用实例,包括:多媒体宣传光盘主界面、自动运行的多媒体宣传光盘。7、多媒体触摸屏程序应用实例,包括:采购中心多媒体触摸屏程序、为触摸屏程序添加虚拟键盘。8、窗体位置应用实例,包括:不可移动的窗体、始终在最上面的窗体、动画显示窗体、以时钟显示界面窗体。9、窗体标题栏应用实例,包括:闪烁的窗体标题栏、拖动没有标题栏的窗体、禁用标题栏上的最大化、最小化或关闭按钮。10、窗体形状及应用,包括:半透明窗体、创建字型窗体、百叶窗窗体、类似office助手。上面列举的各个实例标题正好对应实例的先后次序。
VC++经验技巧宝典配套代码06章 包括: 6.1窗体标题栏应用 0332闪烁标题栏的窗体 0333隐藏和显示标题栏 0334拖动没有标题栏的窗体 0335获取标题栏的内容 0336滚动的窗体标题栏 0337无标题对话框的拖动方法 6.2窗体的位置和大小控制 0339不可移动的窗体 0340始终在最上面的窗体 0341跟随鼠标移动的窗体 0342控制窗体的最大化最小化 0343判断窗体是否最小化在任务栏 0345限制窗体的大小 0346使用鼠标按键调整窗体大小 0347根据图片大小显示的窗体 0348获取当前鼠标点处的控件 6.3个性化窗体 0350半透明窗体 0351透明窗体 0352字型窗体 0353圆角窗体 0354以图片的形状显示窗体 0355应用程序背景与桌面融合 0356立体窗口阴影效果 6.4动画窗体界面 0357动画显示窗体 0358淡入淡出的窗体 0359如qq般隐藏的窗体 0360可横向伸展的对话框 0361可纵向伸展的对话框 0362调用office助手 0363屏幕滚动 0364在窗体中显示彩虹文字字幕 0365在窗体中实现文字横拉效果 0366在窗体中实现万花筒效果 0367在窗体中实现动画效果 6.5实用窗体技术 0368随即更换背景的窗体 0369显示欢迎窗体 0370显示关于窗体 0371不使用ESC键关闭窗体 0372关闭窗体前弹出确认对话框 0373在窗体显示前弹出登录对话框 0374设置对话框背景色 0375使用话刷绘制背景色 0376设置窗体颜色渐变 0377将对话框以位图形式保存到磁盘中 0378在对话框中显示HTML文件 0379在对话框中创建视图 0380如何共享对话框资源 0381如何实现窗体继承 0384在对话框中使用CDialogBar 6.6光标应用 0386十字光标定位 0387获得光标的位置坐标 0388限制光标的移动范围 6.7菜单应用 0392在系统菜单中添加菜单项 0393带历史信息的菜单 0394设置菜单是否可用 0395为菜单添加核对标记 0396浮动的菜单 0397单击右键弹出菜单 0398可以下拉的菜单 0399任务栏图盘弹出菜单 0400绘制渐变效果的菜单 0401将菜单项的字体设置为粗体 6.8工具栏和状态栏应用 0402带背景的工具栏 0403在工具栏中添加编辑框 0404具有提示功能的工具栏 0405工具栏按钮的热点效果 0406定义XP风格的工具栏 0407带进度条的状态栏 0408显示系统时间的状态栏 0409显示滚动字幕的状态栏 0410显示动画的状态栏 0411使状态栏随对话框的改变而改变 6.9文档视图结构应用 0412向视图中放置控件 0413分割窗口 0414视图窗口的任意分割 0417滚动视图CScrollView类应用 0418树形视图CTreeView类应用 0419列表视图CListView类应用 0420HTML视图CHtmlView类应用 共78个例子
1,barsetup10.exe
Office 97 的工具栏(267KB)
2,ac35vb6.zip
界面控件,支持键盘、 MouseOvers 和定制图相等功能(950KB)
3,activeskin.zip
皮肤效果控件,给您的应用程序加上漂亮的皮肤(2524KB)
4,aniline.zip
流向动画控件(445KB)
5,aresbuttonpro.zip
圆形按钮控件(320KB)
6,axfesetup.exe
窗体扩展控件,包含:自动恢复大小和位置,永远在顶大小限制,完全的 HTML 帮助等(889KB)
7,splitter.zip
是一个简单有效的类似资源管理器的 Splitter 控件(27KB)
8,cooline.zip
cooline(8KB)
9,dbtnw.exe
DameWare 公司出品声音按钮控件(191KB)
10,dwtsw.exe
DameWare 公司出品滚动文本控件(154KB)
11,dockit14.exe
窗体控件(816KB)
12,rainbtnvb6.zip
具有许多功能的按钮控件(112KB)
13,ezwizllt.exe
制作类似安装程序向导的控件(709KB)
14,agfastformvb5.zip
功能很多的增强窗体功能的控件(2333KB)
15,axformanimator.zip
支持系统声音和变焦的窗体 Ani 控件(182KB)
16,ft.zip
可用一行代码创建窗体边框和透明窗体的控件(19KB)
17,fsmsg20d.exe
窗体信息捕获控件(247KB)
18,fssc120d.exe
窗体滚动控件,当控件放不下时,它可以给您更大的区域(354KB)
19,gcjrfm,exe
改良 VB 的 Frame 控件(125KB)
20,hsoft11,zip
包含两个 IE 工具栏和 Office 列表框的小控件(73KB)
21,ledbag6.exe
专业的 LED 控件(317KB)
22,wizardx6.exe
专业的向导控件(427KB)
23,led.zip
LED控件(165KB)
24,led.exe
LED 控件(348KB)
25,picbtn.exe
图片按钮控件(365KB)
26,tips.exe
工具提示文本控件(354KB)
27,numberled.zip
NumberLED控件能生成非常漂亮的数码管(175KB)
28,thbcc.zip
定制窗体标题栏控件。可添加图片、文字来改变标题栏(693KB)
29,trispace.zip 73KB
软件 3D 引擎控件,可构造 3D 物体或场景(73KB)
30,ariadtbsrc.zip
dRIAD工具条(220KB)
31,spltbars.zip
利用该控件可以轻松地在你的应用程序中加入一个分割条(25KB)
32,im209.zip
利用该控件创建带图标的菜单(68KB)
33,hlink.zip
将这个控件加到你的窗体上,并设置好URL,当点击该控件时,你就可以打开一个网站或启动默认的电子邮件程序或是其它指定的程序。此外,你还可以改变颜色、字体、边框以及鼠标悬停状态等(18KB)
34,trayform.zip
该控件让你轻松地将窗体发送到系统托盘中(32KB)
35,activeform.zip
一个给窗体换肤的控件(27KB)
36,rotext.exe
ROTEXT(316KB)
37,newcombo.ZIP
标准的combo控件只允许你从下拉框中选择一个选项,也许有时你需要选择多个,试试这个控件(20KB)
38,mighttywindow.ZIP
一个控件,提供了许多功能:隐藏桌面、隐藏工具条、禁止鼠标、重启动、重新登录等,看看就知道啦。(18KB)
39,rulerdemo.ZIP
一个很普通的标尺控件,有水平和垂直两种样式。(11KB)
40,prop20vb6.ZIP
可以实现与VB中属性栏同样的效果,如字体、颜色、浏览等(150KB)
41,ab2eval.EXE
使用 ActiveBar 2.0 基本上可以做出 Office 2000 的各种程序界面(包括菜单、工具栏、垂直导航、状态栏以及各种Dock 窗口)。(2572KB)
42,j006_actresiz.zip
FORM的大小改变的时候,里面的对象也会跟着放大缩小(附示例原程序)(30KB)
43,j005_TriSpace.zip
此控件是一个软件3D引擎,内有示例源程序。(72KB)
44,j004_lvicodra.zip
可拖拉图标的ListView控件演示
45,j003_graphtreeocx.zip
图形树控件(129KB)
46,j002_coolbutton.zip
注释 椭圆、三角、星...形按钮控件,斑竹苦苦搜寻了n天n个网站,真是功夫不负有心人。 Vrey Very Cool(106KB)
47,j001_digital.zip
能够以液晶字体方式显示数字的一个小控件。(15KB)
48,asbubble01.zip
几个特殊的控件,可以在程序里弹出类似于气泡的对话框(37KB)
49,formshaper.zip
无需再调用api,利用这个控件你可以把窗体设计成为任意的形状(18KB)
50,devporbu.zip
建立如同out look里的菜单条(401KB)
51,chklsb25.zip
它提供了类似 word 和 excel 中的内含检查框 ( checkbox)的列表框(listbox)。在这个控制中,每一个条目的字体、颜色、使能状态和选中状态都可以被单独设置。这个控制也支持3d外观、图片条目和定制的检查框符号(167KB)
52,rulerbar.zip
显示纵向或横向标尺的ocx控件(28KB)
53,axafx30.zip
animationfx控件显示动画效果的演示程序(143KB)
54,axtfx30.zip
transitionfx控件转换文字的演示程序(156KB)
55,display1.zip
控制显示方式的控件(71KB)
56,pwindow.zip
paint window控件(12KB)
57,actresiz.zip
改变form的大小的时候,原来form里的其他对象也会跟着放大放缩,简单但是有用!(30KB)
58,sclcon.zip
不知道你对ie里背景的水印属性有没有印象,现在你在窗体里也可以实现了(162KB)
59,submenu.zip
可以在VB中自定义弹出式子菜单(8KB)
60,zlibtool.zip
较好的一个有进度显示(26KB)
61,vfoutbar.zip
这里还有另一个控件 OutLook 风格的 BAR(39KB)
62,ovalbutton.zip
椭圆形按钮控件(8KB)
63,procbar.zip
一个漂亮进度条(可以显示百分比数字)(9KB)
64,weiqi.zip
围棋对弈程序的开发控件,可方便的开发出网络围棋对弈程序(18KB)
65,133.zip
FormShaper,定制窗体形状的控件(18KB)
66,c4.zip
翻滚文字的 ActiveX 控件(6KB)
67,FreeActiveX.zip
取消控件注册的About对话框限制(45KB)
68,Resize32.ocx
自动改变控件尺寸,在设计程序时只要在窗口上放入该控件,其它事情就由它来做喽…… (51KB)
69,transparent.ocx
可使窗体变成透明,如把控件的属性ShowNonClient设为False可使标题栏消失 (34KB)
70,AICOBUT.zip
动画图标按扭(68KB)
71,vbocx10.zip
以及窗体内的控件是否随窗体大小的改变而改变,以及设置窗体是否处于最上方,以及设置窗体是否以爆炸式方式显示(19KB)
72,Easyscroll.zip
为任何控件增加滚动条(41KB)
73,Zcg_3DLabel.zip
立体标签控件(15KB)
74,vertmenu.zip
用来制作类似Outlook那样的垂直菜单,是代替ActiveBar的不错选择。(有源代码) (280KB)
75,imgctls.zip
该控件包含两个控件,ImgListBox和ImgComboBox。它扩展了ListBox和ComboBox的功能,允许你为这两个控件中的项目添加图片(57KB)
76,boundactivex.zip
使用本控件可以使控件在程序运行时用鼠标拖动(18KB)
77,zbpicbt.zip
用VB6写的浮动图形按扭控件(有源代码)(47KB)
78,zbfdbt.zip
用VB6写的浮动文本按扭控件(有源代码)(21KB)
79,Polyform.zip
创建不规则窗口(有例子)(94KB)
80,eyes.zip
跟着鼠标转的眼睛控件(有源代码)(6KB)
81,resize.zip
在调整窗体大小时可以将其上的所有控件一同进行调整.免去了大量的编程代码 (37KB)
82,gvocx.zip
一个能看多种图形格式的控件(267KB)
83,flatbtn.zip
能创建类似IE风格的按钮(88KB)
84,spliter.zip
Spliter.ocx控件主要是用来在程序中切分窗口,其中包括两种分割方式:1、竖着切分2、横着切分(18KB)
85,spltrbar.zip
SpltrBar.ocx控件主要是用来在程序中切分窗口(15KB)
86,cooltoolsbar.zip
CoolToolBar v1.0.0控件类似VC的ToolBar的功能,您也可以在VB中轻松实现拖动工具栏了!(22KB)
87,flatcom.zip
平面控件组 - 有六个全平面控件(包括平面按钮、进度条、移动条、COMLIST、窗体移动栏)(42KB)
88,toolbox.zip
自编的类似VB工具箱的控件(217KB)
89,shape1.zip
任意形状窗口控件(96KB)
90,wallstreet.zip
该控件提供了一个可以左右滚动的WallStreet style ticker(51KB)

15,979

社区成员

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

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