滚动条(下).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
滚动条(下)

滚动条 这次我们将在上一堂课的程序基础上加入一些专业气息。 ·获取字体高度 在上一个程序中,我们固定了每行的高度为30个像素。可如果字体大小改变,比如说字体高度变为40,那么我们的程序会将字符重叠显示,这不是我们希望看到的。所以我们要讲每行的高度与字体的高度关联起来。 那么首先我们就得获取到当前字体的高度。 用途获取字体信息原型BOOL GetTextMetrics( HDC hdc, /设备描述表句柄 LPTEXTMETRIC lptm); /TEXTMETRIC 结构指针返回值成功返回非0值,失败返回0 TEXTMETRIC中包含了字体的全部信息,如高度,宽度,字符集等等等等,我们没必要去一一了解,今天我们只想知道谁是字符高度:tmHeight. GetTextMetrics会将当前设备描述表中选定的字体信息,写入lptm指向的对象。 那么我们需要先获取到设备描述表句柄。 ·非WM_PAINT消息中获取HDC 在非WM_PAINT消息中,获取HDC的方式与我们之前学过的并不一样。它是使用GetDC获取,并使用Release来释放的。 用途在非WM_PAINT消息中获取 设备描述表句柄原型HDC GetDC( HWND hWnd); /窗体句柄返回值成功返回设备描述表句柄,失败返回NULL 用途在非WM_PAINT消息中 释放设备描述表句柄原型int ReleaseDC( HWND hWnd, /窗体句柄 HDC hDC); /设备描述表句柄返回值释放成功返回1 释放失败返回0 ·流行的滚动条函数 同下面要讲的两个滚动条函数相比,以前我们学习的滚动条函数确实是过时的。 用途设置滚动条信息原型int SetScrollInfo( HWND hwnd, /窗体句柄 int nBar, /预设置的滚动条 LPSCROLLINFO lpsi, /SCROLLINFO 结构指针 BOOL redraw); /是否立刻重绘 返回值滚动条当前位置 用途获取滚动条信息原型BOOL GetScrollInfo( HWND hwnd, /窗体句柄 int nBar, /预获取的滚动条 LPSCROLLINFO lpsi); /SCROLLINFO 结构指针返回值成功返回非0值 失败返回0同之前的滚动条函数一样,参数2为SB_VERT(垂直)或SB_HERT(水平) 而对滚动条的操作都由参??3来决定。 typedef struct tagSCROLLINFO { UINT cbSize; /结构大小 UINT fMask; /操作标记 int nMin; /最小值 int nMax; /最大值 UINT nPage; /每页大小 int nPos; /滚动框当前位置 int nTrackPos; /拖动时的滚动框当前位置 } SCROLLINFO, FAR *LPSCROLLINFO;; 我们可以在程序中定义如下对象 SCROLLINFO si; si.cbSize = sizeof(si); Windows中有很多结构第一个字段都用于指出该结构大小。这个字段使将来的Windows版本可以扩充结构并添加新的功能,并且仍然与以前编译的版本兼容。 si.fMask 该字段设置为以SIF前缀开头的一个或多个标志,使用 (|)将他们组合。 #define SIF_RANGE 0x0001 /设置(获取)滚动范围 #define SIF_PAGE 0x0002/设置(获取)滚动页面大小 #define SIF_POS 0x0004/设置(获取)当前位置 #define SIF_DISABLENOSCROLL 0x0008/设置滚动条不自动隐藏 #define SIF_TRACKPOS 0x0010/获取滚动条拖动时位置 #define SIF_ALL (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS) ·滚动窗体 之前,我们都是使用Invalidate()使窗体刷新,实际上我们还有别的选择。滚动窗体。 用途滚动窗体客户区原型

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档