按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
联窗口发送消息WM_SETTEXT,同时,上下控件的位置以十进制或十六
进制格式发出。
选项No thousands(UDS_NOTHOUSANDS)被设置时,在数的每三位中,
不插入一个起分隔作用的千位分隔符。
选项Wrap (UDS_WRAP )决定当上下控件的选择位置超过极限位置时的
处理方式:当该选项被设置时,当上下控件的位置达到其最大或最小
位置后,用户试图再增大或减小该值时,上下控件的值变为最小或最
大。否则,上下控件的值只是简单的保持不变。
选项Arrow keys (UDS_ARROWKEYS)被设置时,当按下向上或向下方
向箭头时,控制增加或减小其位置。
上下控件的扩展风格的设定与其它控件的设定没有什么大的改变,这
里不再详述。
下面,我们看一下上下控件的关联窗口的指定及其行为管理的实现。
首先,我们看看当上下控件的Auto buddy风格被设定的情况下的管
理。
我们先指定上下控件的关联窗口。这需要用到函数SetBuddy:
CWnd* SetBuddy( CWnd* pWndBuddy );
该函数的唯一一个参数为一指向上下控件的关联窗口的指针,其返回
值为一指向
该上下控件原来的关联窗口的指针。
l 注意:
l 在程序中,一般应先指定上下控件的变动范围SetRange:
l void SetRange( int nLower; int nUpper );
…………………………………………………………Page 289……………………………………………………………
该函数的两个参数分别指定了上下控件的最小及最大变动
值。
以后我们不再需要为上下控件的关联窗口的行为编写任何代码。系统
会为我们作好所有的规范化的工作:上下控件的位置改变时,其变化
直接反应在与其关联的窗口中――该窗口中会以十进制或十六进制数
的形式来反应上下控件此时的位置信息。
当我们不设定该风格的时候,情况发生了变化。范围及关联窗口的设
定同上文没有什么差别。但现在,当上下控件的位置发生变化时,虽
然上下控件会发送消息反应这一变化,但其关联窗口的行为需要我们
编写代码来实现。当上下控件发生的位置与其前一位置不一样时,它
发送消息ON_WM_HSCROLL (ON_WM_VSCROLL)来反应这一变化。在程序
接收到该消息后,经过适当的处理,就可以自己对该消息作出反应了
(当然,如果你愿意,你也可以什么事也不做)。
下面为一段关于上下控件的关联窗口控制的代码。
// 。。。
m_Spin2。SetRange(0;(sizeof(szColors)/sizeof(szColors'0'))…1);
m_Spin2。SetPos(0);
m_Spin2。SetBuddy(&m_Buddy2);
m_Spin2。SetWindowText(szColors'0');
// 。。。
void CSpinBoxDlg::OnHScroll(UINT nSBCode; UINT nPos; CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CSpinButtonCtrl *pSpin=(CSpinButtonCtrl *)pScrollBar;
if(pSpin==&m_Spin2)
m_Buddy2。SetWindowText(szColors'pSpin…》GetPos()');
CDialog::OnHScroll(nSBCode; nPos; pScrollBar);
}
第一段代码设定了上下控件的范围,关联窗口,位置,并初始化了编
…………………………………………………………Page 290……………………………………………………………
辑框中的显示。
第二段中的函数处理了消息ON_WM_HSCROLL,并利用上下控件的位置
对其关联窗口的显示进行了改变。语句
CSpinButtonCtrl *pSpin=(CSpinButtonCtrl *)pScrollBar;
将该消息的最后一个参数进行转换,以便确定是否该消息是我们所关
心的上下控件发出的。接下来用语句
if(pSpin==&m_Spin2)
进行判断。在确知该消息是由特定的上下控件发出的后,语句
m_Buddy2。SetWindowText(szColors'pSpin…》GetPos()');
对编辑框中的文本进行了更新。先用上下控件的成员函数GetPos取得
其位置,然后用函数SetWindowText重新设定编辑框中的文本
(szColors' '为预先设定的一枚举数组)。
l 注意:
l 以上设定范围、关联窗口、位置 (还有没有在上文提到的加速设
置)动作,都有相应的获取函数 :例如GetBuddy函数对应于
SetBuddy等。读者有兴趣可以参考系统的技术支持部分。
…………………………………………………………Page 291……………………………………………………………
第六章 使用Windows标准控件
我们在前面曾提到过,控件是一些行为标准化了的窗口,一般用于对
话框或其它窗口中充当与用户交互的元素。在Visual C++中,可以使
用的控件分成三类:
(1) Windows标准控件
Windows标准控件由Windows操作系统提供,在Windows 95中还提供了
一些新增的控件。所有这些控件对象都是可编程的,我们可以使用
Visual C++提供的对话框编辑器把它们添加到对话框中。Microsoft
基础类库 (MFC)提供了封装这些控件的类,它们列于表6。1。
表6。1 Windows标准控件
控件 MFC类 描述
动画 CAnimateCtrl 显示连续的AVI视频剪辑
按钮 CButton 用来产生某种行为的按钮,以及
复选框、单选钮和组框
组合框 CboBox 编辑框和列表框的组合
编辑框 CEdit 用于键入文本
标题头 CHeaderCtrl 位于某一行文本之上的按钮,可
用来控制显示文件的宽度
热键 CHotKeyCtrl 用于通过按下某一组合键来很快
的执行某些常用的操作
图象列表 CImageList 一系列图象(典型情况下是一系
列图标或位图)的集合。图象列
表本身不是一种控件,它常常是
和其它控件一起工作,为其它控
件提供所用的图象列表
列表 CListCtrl 显示文本及其图标列表的窗口
列表框 CListBox 包括一系列字符串的列表
进度 CProgressCtrl 用于在一较长操作中提示用户所
完成的进度
多格式文 CRichEditCtrl 提供可设置字符和段落格式的文
本编辑 本编辑的窗口
…………………………………………………………Page 292……………………………………………………………
滚动条 CScrollBar 为对话框提供控件形式的滚动条
滑块 CSliderCtrl 包括一个有可选标记的滑块的窗
口
旋转按钮 CSpinButtonCtrl 提供一对可用于增减某个值的箭
头
静态文本 CStatic 常用于为其它控件提供标签
状态条 CStatusBarCtrl 用于显示状态信息的窗口,同
MFC类CStatusBar类似
续表6。1
控件 MFC类 描述
选项卡 CTabCtrl 在选项卡对话框或属性页中提供
具有类似笔记本中使用的分隔标