在滑块控件的属性列表里,我们可以设置滑块控件的位置,水平或垂直等其他的属性,在这里,我们做个小程序来熟悉掌握滑块控件。
HDC GetDC(HWND hWnd);
该函数检索一指定窗口的客户区域或整个屏幕的显示设备上下文环境的句柄,以后可以在GDI函数中使用该句柄来在设备上下文环境中绘图。
UpdateData(FALSE);
将变量数据更新到窗口中
UpdateData(FALSE);
将窗口中的数据更新到变量中
无论是标准滚动条,还是滚动条控件,滚动条的通知消息都是用WM_HSCROLL 和WM_VSCROLL消息发送出去的。对这两个消息的默认处理函数是CWnd::OnHScroll和CWnd::OnVScroll,一般需要在派生类中对这两个函数进行重载,以实现滚动功能。也就是说,假设在一个对话框中放入了一个水平滚动条,我们可以在对话框类中重载OnHScroll函数,并在OnHScroll函数中实现滚动功能。
afx_msg void OnHScroll(UINT nSBCode,UINT nPos,CScrollBar* pScrollBar);
afx_msg void OnVScroll(UINT nSBCode,UINT nPos,CScrollBar* pScrollBar);
参数nSBCode是通知消息码,主要通知码及含义的介绍下面已列出。nPos 是滚动框的位置,只有在nSBCode为SB_THUMBPOSITION或SB_THUMBTRACK时,该参数才有意义。如果通知消息是滚动条控件发来的,那么pScrollBar 是指向该控件的指针,如果是标准滚动条发来的,则pScrollBar 为NULL。
SB_BOTTOM/SB_RIGHT:滚动到底端(右端)
SB_TOP/SB_LEFT:滚动到顶端(左端)
SB_LINEDOWN/SB_LINERIGHT:向下(向右)滚动一行(列)
SB_LINEUP/SB_LINELEFT:向上(向左)滚动一行(列)
SB_PAGEDOWN/SB_PAGERIGHT:向下(向右)滚动一页
SB_PAGEUP/SB_PAGELEFT:向上(向左)滚动一页
SB_THUMBPOSITION:滚动到指定位置
SB_THUMBTRACK:滚动框被拖动。可利用该消息来跟踪对滚动框的拖动
SB_ENDSCROLL:滚动结束
在《使用滑块控件设置颜色》一文中,我在OnPaint函数中,加了一句代码:
UpdateArea();
这句代码是干嘛的呢?首先,我们知道OnPaint函数是重绘的作用,我们先注释掉这行代码,看看效果:
对比我们《使用滑块控件设置颜色》一文中最后代码的运行结果,你会发现,我们图片控件的区域竟然没有被黑色填满!没错,这就是我们之所以在OnPaint函数中添加代码的原因,而当你鼠标一旦碰了滑块控件,你就会发现,区域变黑了,这是在这个函数中添加代码的原因。