MFC UI界面向来都是步骤一样,先从OnInitDialog到OnPaint,中间的OnEraseBkgnd,DestoryWindow函数等等,这里就不多写了,今天学到的东西是窗口的滑动,消息响应的顺序是从OnLButtonDown到OnMouseMove最后是OnLButtonUp。
具体的做法是在OnLButtonDown中记下最新落点的位置m_LButtonDownPoint,点击CPANButton的时候注意改变CPANButton的背景,m_bInSide这个变量表示是否跳到另一个操作界面,注意是跳到!不是滑动的页面!利用rtOutSideBtn[InSideBtnSide].PtInRect(point)判断是否触碰到按钮,然后利用BitBlt函数将之前写好的页面刷出来,就跳到另一个页面了。
最重要的是在OnMouseMove函数中,MoveButton函数判定鼠标点击在下盘部分时,移动所有按钮!若向左移动多少,就让按钮移动多少。
接下来的操作时在OnLButtonUp里面看是不是滑动到另一页去,这里要先判断向左还是向右滑的,m_TotalMoveDistance>0,表示向右拖,继续调用MoveButton函数,将所有按钮移动800-已经移动的值,这样所有的按钮相当于移动了800,也就是整个页面被替换了!
以前有一个误区,以为MoveWindow函数的参数是个CRect,原来是左边,顶部,宽度和高度,明天任务是写一个滑动的listBox。