简介
我的应用程序需要减少4个边缘的矩形对象,maximumnbsp(左,上,右,底部);减少为所有边缘的金额是100%
下面的图片显示为减少允许3例。顶部边缘。{S0}
这是不容易实现用户的任务,不过,我提供一个合适的控制,所以我创建了2个按钮,可以向内移动滑块,但不能重叠或相互交叉。
下面的界面是一个示例程序,其中包含2个水平和垂直滑块2的屏幕截图。文件,类,函数和消息文件和类
目录quot; libquot;里面的示例程序包含4个文件:SliderBoth和SliderBothBtn(H和CPP)
2类继承,每个文件与该文件相同的名称的一类。从CWnd - 滑块属于MFC问题。
SliderBoth类是主要的控制,SliderBothBtn是你只需要包括在thenbsp SliderBoth的SliderBoth按钮类
;文件,在其中使用滑块。功能类SliderBothBOOL Create(CWnd*pMum,CRect rcBd,BOOL bHorz,int iID)
bHorz:如果是水平或垂直滑块
IID:控制滑块ID,它必须是独特的父窗口(类似按钮或菜单ID)
rcBd:矩形滑块,但它的宽度或高度是固定的没有矩形(见功能的MoveWindow (...)下面)的影响。{C}
最小,最大和滑块的tick值,它必须是:
iMaxgt; IMIN,iTickgt; 0(IMAX - IMIN)%2 == 0,(IMAX IMIN)%iTick == 0Because滑块在中间绘制一个较长的打勾符号,我的程序。
您可以通过修改源代码中删除最后2限制容易。GetRange(int&iMin,int&iMax,int&iTick)
获取滑块的范围和刻度值GetPosition(int&iL,int&iR)
//and
SetPosition(int iL,int iR)
或
IL分别指向左或底部horizontalnbsp按钮的位置;或垂直滑块设置按钮的位置。void MoveWindow(CRect*pRect,BOOL bRepaint=TRUE)
void MoveWindow(int iX,int iY,int iW,int iH,BOOL bRepaint=TRUE)
覆盖CWnd的两个功能相关的功能,移动水平滑块的高度或宽度垂直slidernbsp;一直到27像素。
通常你只需要调用Create()和SetRange()函数。消息
如果鼠标是释放移动滑块的按钮后(WM_LBUTTONUP),一个消息是发布PostMessage的()的格式滑块到它的父窗口:
消息 WM_COMMAND消息, wParam参数:滑块的ID, lParam:一个 零(未使用)
(slidernbsp;只使用thisnbsp;消息)。
父窗口上的消息调用函数GetPosition (...)获得的滑块按钮位置
消息被发送。
如果按钮位置不变,移动后 - 例如移动到左,那么先前的立场的权利。
注意:这是很容易修改的源代码,如果你neednbsp;消息,而鼠标是moving.nbsp;
结论
我的文章,包括这一个,纯粹是从我的测试应用程序,我没有任何额外的时间来写一个真正的quot; articlequot;许多球员的地方 - 目前滑块perfectlynbsp;我的程序,这是所有我可以donbsp;阶段。
如果您发现错误或需要更多的功能在您的案件,请答复后,我可能会修改滑块,如果Inbsp;有一些时间day.nbsp;历史2006年8月9日:战后初期