1 / 28

第 10 章 控件 (Control)

第 10 章 控件 (Control). 10.1 标准控件及其使用 10.2 通用控件 10.3 控件的背景颜色 ( 自学 ). 控件 (Control) :为方便用户与应用程序的交互,程序界面上放置的能够用于处理用户事件并作出响应的图形部件,称为 ~ 。如, 命令按钮 (Command Button) 文本框 (Text Box) 滚动条 (Progress Bar) 列表框 (List Box) 静态文本 (Static) ……. 控件的特点: 图形化 ( 派生自 CWnd 类 ) ,具有窗口的一切特性

yin
Download Presentation

第 10 章 控件 (Control)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第10章 控件(Control) 10.1 标准控件及其使用 10.2 通用控件 10.3 控件的背景颜色(自学)

  2. 控件(Control):为方便用户与应用程序的交互,程序界面上放置的能够用于处理用户事件并作出响应的图形部件,称为~。如,控件(Control):为方便用户与应用程序的交互,程序界面上放置的能够用于处理用户事件并作出响应的图形部件,称为~。如, • 命令按钮(Command Button) • 文本框(Text Box) • 滚动条(Progress Bar) • 列表框(List Box) • 静态文本(Static) • …… • 控件的特点: • 图形化(派生自CWnd类),具有窗口的一切特性 • 分为可见(Visible)控件和非可见(Invisible)控件 • 控件通常作为子窗口出现在应用程序的界面上 • MFC中控件以类的形式提供

  3. 10.1 标准控件及其使用 • 标准控件(Standard control): • 交互对象 • 应用于对话框,或主窗口,或工具栏 • 接收用户信息,反馈(显示)信息

  4. 10.1 标准控件及其使用 • 控件的使用规则: • 1) 创建控件类对象,一般在窗口的WM_CREATE消息响应函数OnCreate()中编写逻辑代码。 • 2) 建立消息响应,并编写相应的响应代码 Example: CListBoxlistbox; listbox.Create(…);

  5. CObject 1. 静态文本控件(CStatic) CCmdTarget • 用途:显示文本或图片。一般不接收用户事件消息。 CWnd CStatic • 初始化成员函数:Create()原型 • BOOLCreate( • LPCTSTRlpszText, //字符串 • DWORDdwStyle, // 样式 • constRECT&rect, // 大小及位置 • CWnd*pParentWnd, // 父窗口 • UINTnID=0xffff); // 控件的资源标识

  6. 10.1 标准控件及其使用

  7. 10.1 标准控件及其使用 • 为了使应用程序的子窗口可见,有两个样式是必须选定的, • WS_CHILD • WS_VISIBLE • 如, • CStatic m_static; • m_static.Create(“Static”, WS_CHILD | WS_VISIBLE | SS_CENTER, • CRect(20,20,100,40), this, 0) 不需要响应用户交互,因此,资源标识设为0。 分析例 10-1

  8. CObject 2. 按钮控件(CButton) CCmdTarget BOOLCreate( LPCTSTRlpszCaption, //显示文本 DWORDdwStyle, // 样式 constRECT&rect, // 大小及位置 CWnd*pParentWnd, // 父窗口 UINTnID); // 资源标识 CWnd CButton

  9. 2. 按钮控件(CButton) Example: #define IDB_BUTTON1 101 (Resource.h) CButton button; button.Create(“Button”, WS_CHILD | WS_VISIBLE |WS_BORDER, CRect(20,20,100,60), this, IDB_BUTTON1); button.Create(“CHECK”, WS_CHILD | WS_VISIBLE | BS_CHECKBOX, CRect(20,20,100,60), this, IDB_BUTTON1); button.Create(“RADIO”, WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, CRect(20,20,100,60), this, IDB_BUTTON1);

  10. 2. 按钮控件(CButton) CButton的消息响应:

  11. Example: • 消息映射 • ON_BN_CLICKED(IDB_BUTTON1, OnButton1Clicked) • 2) 消息映射函数声明和定义 • afx_msg void OnButton1Cliked(); • void CButtonDemoView::OnButton1Clicked() { … } 演示CButton消息映射过程 分析例10-2

  12. 2. 按钮控件(CButton)

  13. CObject 3. 编辑控件(CEdit) CCmdTarget • CEdit:输入文本,或编辑文本, • 是应用程序从用户处得到文本的主要对象 • 单行文本,或多行文本 CWnd CEdit

  14. 3. 编辑控件(CEdit) BOOLCreate( DWORDdwStyle, //样式 constRECT&rect, //大小及位置 CWnd*pParentWnd,//父窗口 UINTnID);//资源标识

  15. 分析例10-3 EN_MAXTEXT The EN_MAXTEXT notification message is sent when the current text insertion has exceeded the specified number of characters for the edit control. The text insertion has been truncated.

  16. 10.2 通用控件 • 进度条 • 滑动条 • 微调器 • 图像列表 • 列表视图 • 工具栏

  17. 10.2 通用控件 1. 进度条控件(CProgressCtrl) BOOLCreate( DWORDdwStyle, constRECT&rect, CWnd*pParentWnd, UINTnID); dwStyle: PBS_VERTICAL垂直进度条 PBS_SMOOTH平滑进度条(否则,块状填充)

  18. 1. 进度条控件(CProgressCtrl) Example: CProgrssCtrl progressCtrl; progressCtrl.Create(WS_CHILD | WS_BORDER | WS_VISIBLE, CRect(20, 20, 100, 20), this, IDC_PROGBAR); progrssCtrl.SetRange(0, 100); progrssCtrl.SetStep(10); progrssCtrl.SetPos(0); for(int i = 0; i < 10; i++) progrssCtrl.StepIt();

  19. CSpinButtonCtrl经常与编辑框控件(CEdit)配对使用。CSpinButtonCtrl经常与编辑框控件(CEdit)配对使用。 2. 微调器控件(CSpinButtonCtrl) BOOL CSpinButtonCtrl::Create(DWORDdwStyle,constRECT&rect, CWnd*pParentWnd,UINTnID);

  20. 2. 微调器控件(CSpinButtonCtrl) 与CEdit控件的绑定: CWnd * CSpinButtonCtrl::SetBuddy(CWnd * pWndBuddy)

  21. 2. 微调器控件(CSpinButtonCtrl) Example: CEdit spinEdit; spinEdit.Create(WS_CHILD|WS_VISIBLE|WS_BORDER, CRect(20,20,100,40), this, IDC_SPINNER); CSpinButtonCtrl spin; spin.Create(…); spin.SetBuddy(&spinEdit);\ spin.SetRange(0,100); spin.SetPos(0); ….

  22. 10.2 通用控件 定时器 Timer 分析例10-4

  23. 定时器的使用 • 定时器告诉WINDOWS一个时间间隔(Interval),然后WINDOWS以此时间间隔周期性触发程序。 • 通常有两种方法来实现: • 发送WM_TIMER消息 • 调用应用程序定义的回调函数 • 1.1 用WM_TIMER来设置定时器 • 先请看SetTimer这个API函数的原型 • UINT_PTR SetTimer( • HWND hWnd, // 窗口句柄 • UINT_PTR nIDEvent, // 定时器ID,区分多个定时器 • UINT uElapse, // 时间间隔,单位为毫秒 • TIMERPROC lpTimerFunc // 回调函数 • ); SetTimer(m_hWnd,1,1000,NULL); //一个1秒触发一次的定时器

  24. 响应代码 消息映射 启动定时器 定时器的使用 • 在MFC程序中SetTimer被封装在CWnd类中,调用就不用指定窗口句柄了,例如: • UINT SetTimer(1,100,NULL); • 函数返回值就是第一个参数值表示此定时器的ID号。 • 第二个参数表示定时间隔100毫秒,三个参数在这种方法中一般用NULL。

  25. 定时器的使用 • 1.2 调用回调函数 • 此方法首先写一个如下格式的回调函数 • void CALLBACK TimerProc(HWND hWnd,UINT nMsg, • UINT nTimerid,DWORD dwTime); • 然后再用SetTimer(1,100,TimerProc)函数来建一个定时器,第三个参数就是回调函数地址。

  26. 多定时器的使用 • 使用MFC,增加WM_TIMER的消息处理函数OnTimer即可,请看如下例子 • void CTimerTestDlg::OnTimer(UINT nIDEvent) • { • switch (nIDEvent) • { • case 24: ///处理ID为24的定时器 • Draw1(); • break; • case 25: ///处理ID为25的定时器 • Draw2(); • break; • } • }

  27. 定时器的使用 • 取消定时器 • 不再使用定时器后,我们应该调用KillTimer来取消定时,KillTimer的原型如下 • BOOL KillTimer( • HWND hWnd, // 窗口句柄 • UINT_PTR uIDEvent // ID • ); • 在MFC程序中我们可以直接调用KillTimer(int nIDEvent)来取消定时器。

  28. 10.3 控件的背景颜色(自学)

More Related