这里说的是和 窗口关联的滚动条。
给窗口添加滚动条,指定窗口风格为 WS_VSCROLL/WS_HSCROLL。
创建了滚动条后,还需设置 范围,位置,页大小。
风格1:
CWnd::SetScrollRange/GetScrollRange
CWnd::SetScrollPos/GetScrollPos
关于重画选项的意义:
在连续多次调用,前面重画选项关,最后一次重画选项开,可提高执行效率。
风格2:
CWnd::GetScrollInfo/SetScrollInfo
(int nBar, LPSCROLLINFO lpScrollInfo, UINT nMask = SIF_ALL)
水平滚动条发WM_HSCROLL消息,
垂直滚动条发WM_VSCROLL消息。
CWnd::ScrollWindow滚动窗口,适合处理滚动条滚动造成的窗口重绘。(滚动块)使窗口客户区的整体或局部内容向 上/下/左/右滚动,滚动采用像素块传输,使移出部分无效。
如何在有滚动条窗口中高效,简洁绘制:
1.响应WM_HSCROLL/WM_VSCROLL时,用ScrollWindow
在OnPaint中。
简单的,可以按窗口空间逐行绘制。(全部绘制)
高效的,绘制前,设置映射模式的窗口原点,让窗口绘制部分和滚动位置匹配。(部分绘制)
关于:WM_CREATE
对应于 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
注意在于 返回0,表示窗口已正确初始化,返回-1,表示不能创建。其他的消息处理函数,一般成功返回TRUE,失败FALSE。
CFrameWnd::PostNcDestroy有delete this。
CWnd::PostNcDestroy中无,对CWnd或其派生类,用new创建窗口,做MainPage时,往往需要覆盖此函数,加上delete this。