第9章_ppt.txt

大学VISUAL C++ 6.0实例教程课件-课件PPT

收藏

资源目录
跳过导航链接。
压缩包内文档预览:
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:21836072    类型:共享资源    大小:648.08KB    格式:ZIP    上传时间:2019-09-06 上传人:QQ24****1780 IP属地:浙江
25
积分
关 键 词:
大学VISUAL C++ 6.0实例教程课件-课件PPT 大学 visual 实例教程 课件 ppt
资源描述:
大学VISUAL C++ 6.0实例教程课件-课件PPT,大学VISUAL,C++,6.0实例教程课件-课件PPT,大学,visual,实例教程,课件,ppt
内容简介:
Visual C+6.0实例教程,第2章 文档和视 第3章 对话框与控件 第4章 菜单、快捷键和控制条 第5章 图形操作 第6章 文件操作 第7章 MFC通用类 第8章 异常处理和诊断 第9章 多线程,Visual C+6.0实例教程第2章 文档和视第3章 对话框与控件第4章 菜单、快捷键和控制条第5章 图形操作第6章 文件操作第7章 MFC通用类第8章 异常处理和诊断第9章 多线程第2章 文档和视,内容摘要: 通过视类与用户交互 通过视类与用户交互,返回目录,2.1 通过视类与用户交互,学习目标 1. 在程序中响应鼠标消息 在程序中响应键盘消息,2.1,返回第2章,程序的实现步骤,利用AppWizard生成单文档程序框架(DocView ) 为视类添加数据成员,2.1,BOOL m_bMouseDown; /标识鼠标左键是否按下 HCURSOR m_hCross; /十字型鼠标句柄 HCURSOR m_hArrow; /标准型鼠标句柄 CPoint m_ptOld; /临时点 CPoint m_ptStart; /画线的起始点,3. 在构造函数中初始化成员变量,CDocViewView:CDocViewView() m_bMouseDown = false; m_hCross = AfxGetApp()-LoadStandardCursor(IDC_CROSS); m_hArrow = AfxGetApp()-LoadStandardCursor(IDC_ARROW); ,2.1,void CDocViewView: OnLButtonDown (UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default m_bMouseDown = true; / 鼠标左键按下 m_ptStart = point; / 画线的起点 m_ptOld = point; / 临时点 SetCapture(); / 将鼠标消息发送到视窗口 CRect rect; GetClientRect( ,4为视类添加鼠标动作响应函数,2.1,void CMyDrawView:OnMouseMove(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default if( m_bMouseDown ) CClientDC dc(this); dc.SetROP2( R2_NOT ); dc.MoveTo( m_ptStart ); /这两行代码擦除从起点(鼠标按下点)到 dc.LineTo( m_ptOld ); /上次鼠标移动到的位置之间的临时线 dc.MoveTo( m_ptStart ); /这两行代码从起点到鼠标当前位置画线 dc.LineTo( point ); / m_ptOld = point; /鼠标当前位置在下一次鼠标移动事件看来就是“旧位置“ CView:OnMouseMove(nFlags, point); ,4为视类添加鼠标动作响应函数,void CMyDrawView:OnLButtonUp(UINT nFlags, CPoint point) if( m_bMouseDown ) m_bMouseDown = false; ReleaseCapture(); ClipCursor( NULL ); CClientDC dc(this); dc.SetROP2( R2_NOT ); dc.MoveTo( m_ptStart ); /这两行代码擦除从起点(鼠标按下点)到 dc.LineTo( m_ptOld ); /上次鼠标移动到的位置之间的临时线 dc.SetROP2( R2_COPYPEN ); dc.MoveTo( m_ptStart ); /这两行代码从起点到鼠标当前位置画线 dc.LineTo( point ); / SetCursor(m_hArrow); /设置鼠标形状为标准箭头形 CView:OnLButtonUp(nFlags, point); ,2.1,程序的实现步骤_2,1为视类添加数据成员为视类添加数据成员,2.1,int m_nLine; /记录已输入字符行数 CString m_strDisplay; /保存当前字符串的变量,2. 在构造函数中初始化成员变量,CDocViewView:CDocViewView() / TODO: add construction code here m_nLine = 0; m_bMouseDown = false; m_hCross = AfxGetApp()-LoadStandardCursor(IDC_CROSS); m_hArrow = AfxGetApp()-LoadStandardCursor(IDC_ARROW); ,3为视类添加键盘消息响应函数,2.1,void CDocViewView:OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) if(nChar = VK_RETURN) /如果按下回车键 m_strDisplay.Empty(); m_nLine+; else if(m_strDisplay.GetLength() 64) /当前行字符数小于64 m_strDisplay += nChar; CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics( ,基本知识,AfxGetApp() LoadStandardCursor(IDC_CROSS); 2.GetClientRect( / 设置鼠标形状为十字形,2.1,2.2 利用文档类处理数据,学习目标 1. 在文档类中保存数据,2.2,返回第2章,程序的实现步骤,添加类CLine,2.2,class CLine : public CObject public: CPoint m_ptStart; CPoint m_ptEnd; CLine(); CLine(CPoint pt1, CPoint pt2); virtual CLine(); void Draw(CDC *pDC); ;,2.2,CLine:CLine() CLine:CLine(CPoint pt1, CPoint pt2) m_ptStart.x = pt1.x; m_ptStart.y = pt1.y; m_ptEnd.x = pt2.x; m_ptEnd.y = pt2.y; CLine:CLine() void CLine:Draw(CDC *pDC) pDC-MoveTo(m_ptStart); pDC-LineTo(m_ptEnd); ,程序的实现步骤,2在文档类中添加保存数据的变量,2.2,public: CString m_strLastLine; CStringList m_strList; CPtrList m_LineList;,3修改视类成员函数OnButtonUp()和OnChar(),程序的实现步骤,2.2,void CDocViewView:OnLButtonUp(UINT nFlags, CPoint point) if( m_bMouseDown ) m_bMouseDown = false; ReleaseCapture(); ClipCursor( NULL ); CClientDC dc(this); dc.SetROP2( R2_NOT ); dc.MoveTo( m_ptStart ); dc.LineTo( m_ptOld ); dc.SetROP2( R2_COPYPEN ); dc.MoveTo( m_ptStart ); dc.LineTo( point ); CDocViewDoc *pDoc = GetDocument(); /得到文档类指针 CLine *pLine = new CLine(m_ptStart,point); /创建CLine对象 pDoc-m_LineList.AddTail( (void *) pLine); /将pLine加入到链表中 SetCursor(m_hArrow); /设置鼠标形状为标准箭头形 CView:OnLButtonUp(nFlags, point); ,程序的实现步骤,void CDocViewView:OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) CDocViewDoc *pDoc = GetDocument(); if(nChar = VK_RETURN) pDoc-m_strList.AddTail(m_strDisplay); pDoc-m_strLastLine.Empty(); m_strDisplay.Empty(); m_nLine+; else if(m_strDisplay.GetLength() m_strLastLine = m_strDisplay; CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics( ,2.2,程序的实现步骤,2.2,void CDocViewDoc:DrawLine(CDC *pDC) CLine *pLine; POSITION pos = m_LineList.GetHeadPosition(); for(; pos != NULL; m_LineList.GetNext(pos) pLine = (CLine *) m_LineList.GetAt(pos); pLine-Draw(pDC); ,4. 在文档类中添加重画直线和重写文本的函数,程序的实现步骤,2.2,void CDocViewDoc:DrawText(CDC *pDC) TEXTMETRIC tm; pDC-GetTextMetrics( ,程序的实现步骤,2.2,void CDocViewView:OnDraw(CDC* pDC) CDocViewDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); / TODO: add draw code for native data here pDoc-DrawLine(pDC); pDoc-DrawText(pDC); ,5修改视类成员函数OnDraw(),返回第2章,第2章 文档和视 内容摘要:通过视类与用户交互通过视类与用户交互返回目录2.1 通过视类与用户交互 学习目标1. 在程序中响应鼠标消息 在程序中响应键盘消息2.1返回第2章程序的实现步骤利用AppWizard生成单文档程序框架(DocView )为视类添加数据成员 2.1BOOL m_bMouseDown; /标识鼠标左键是否按下HCURSOR m_hCross; /十字型鼠标句柄HCURSOR m_hArrow; /标准型鼠标句柄CPoint m_ptOld; /临时点CPoint m_ptStart; /画线的起始点3. 在构造函数中初始化成员变量 CDocViewView:CDocViewView()m_bMouseDown = false;m_hCross = AfxGetApp()-LoadStandardCursor(IDC_CROSS);m_hArrow = AfxGetApp()-LoadStandardCursor(IDC_ARROW);2.1void CDocViewView: OnLButtonDown (UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultm_bMouseDown = true; / 鼠标左键按下m_ptStart = point; / 画线的起点m_ptOld = point; / 临时点SetCapture(); / 将鼠标消息发送到视窗口CRect rect;GetClientRect(&rect); / 得到客户窗口的大小ClientToScreen(&rect); / 将当前窗口坐标转换成屏幕坐标ClipCursor(&rect); / 把鼠标限定在其参数指定的矩形区域内SetCursor(m_hCross);/ 设置鼠标形状为十字形CView:OnLButtonDown(nFlags, point);4为视类添加鼠标动作响应函数 2.1void CMyDrawView:OnMouseMove(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultif( m_bMouseDown )CClientDC dc(this);dc.SetROP2( R2_NOT );dc.MoveTo( m_ptStart );/这两行代码擦除从起点(鼠标按下点)到dc.LineTo( m_ptOld );/上次鼠标移动到的位置之间的临时线dc.MoveTo( m_ptStart );/这两行代码从起点到鼠标当前位置画线dc.LineTo( point );/ m_ptOld = point; /鼠标当前位置在下一次鼠标移动事件看来就是旧位置CView:OnMouseMove(nFlags, point);4为视类添加鼠标动作响应函数 void CMyDrawView:OnLButtonUp(UINT nFlags, CPoint point) if( m_bMouseDown )m_bMouseDown = false;ReleaseCapture();ClipCursor( NULL );CClientDC dc(this);dc.SetROP2( R2_NOT );dc.MoveTo( m_ptStart ); /这两行代码擦除从起点(鼠标按下点)到dc.LineTo( m_ptOld ); /上次鼠标移动到的位置之间的临时线 dc.SetROP2( R2_COPYPEN );dc.MoveTo( m_ptStart ); /这两行代码从起点到鼠标当前位置画线dc.LineTo( point ); / SetCursor(m_hArrow); /设置鼠标形状为标准箭头形CView:OnLButtonUp(nFlags, point);2.1程序的实现步骤_21为视类添加数据成员为视类添加数据成员 2.1int m_nLine; /记录已输入字符行数CString m_strDisplay; /保存当前字符串的变量2. 在构造函数中初始化成员变量 CDocViewView:CDocViewView()/ TODO: add construction code herem_nLine = 0;m_bMouseDown = false;m_hCross = AfxGetApp()-LoadStandardCursor(IDC_CROSS);m_hArrow = AfxGetApp()-LoadStandardCursor(IDC_ARROW); 3为视类添加键盘消息响应函数 2.1void CDocViewView:OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) if(nChar = VK_RETURN) /如果按下回车键m_strDisplay.Empty();m_nLine+;else if(m_strDisplay.GetLength() MoveTo(m_ptStart);pDC-LineTo(m_ptEnd);程序的实现步骤2在文档类中添加保存数据的变量 2.2public:CString m_strLastLine;CStringList m_strList;CPtrList m_LineList;3修改视类成员函数OnButtonUp()和OnChar()程序的实现步骤2.2void CDocViewView:OnLButtonUp(UINT nFlags, CPoint point) if( m_bMouseDown )m_bMouseDown = false;ReleaseCapture();ClipCursor( NULL );CClientDC dc(this);dc.SetROP2( R2_NOT );dc.MoveTo( m_ptStart );dc.LineTo( m_ptOld );dc.SetROP2( R2_COPYPEN );dc.MoveTo( m_ptStart );dc.LineTo( point );CDocViewDoc *pDoc = GetDocument(); /得到文档类指针CLine *pLine = new CLine(m_ptStart,point); /创建CLine对象pDoc-m_LineList.AddTail( (void *) pLine); /将pLine加入到链表中SetCursor(m_hArrow); /设置鼠标形状为标准箭头形CView:OnLButtonUp(nFlags, point);程序的实现步骤void CDocViewView:OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) CDocViewDoc *pDoc = GetDocument(); if(nChar = VK_RETURN)pDoc-m_strList.AddTail(m_strDisplay);pDoc-m_strLastLine.Empty();m_strDisplay.Empty();m_nLine+;else if(m_strDisplay.GetLength() m_strLastLine = m_strDisplay;CClientDC dc(this);TEXTMETRIC tm;dc.GetTextMetrics(&tm);int nLineHeight = tm.tmHeight + tm.tmExternalLeading;dc.TextOut(0, m_nLine * nLineHeight, m_strDisplay);CView:OnChar(nChar, nRepCnt, nFlags); 2.2程序的实现步骤2.2void CDocViewDoc:DrawLine(CDC *pDC)CLine *pLine;POSITION pos = m_LineList.GetHeadPosition();for(; pos != NULL; m_LineList.GetNext(pos)pLine = (CLine *) m_LineList.GetAt(pos);pLine-Draw(pDC); 4. 在文档类中添加重画直线和重写文本的函数 程序的实现步骤2.2void CDocViewDoc:DrawText(CDC *pDC)TEXTMETRIC tm;pDC-GetTextMetrics(&tm);int nLineHeight = tm.tmHeight + tm.tmExternalLeading;CString str;int line = 0;POSITION pos = m_strList.GetHeadPosition();for( ; pos != NULL; m_strList.GetNext(pos) )str = m_strList.GetAt(pos);pDC-TextOut( 0, line*nLineHeight, str );line+;pDC-TextOut( 0, line*nLineHeight, m_strLastLine );程序的实现步骤2.2void CDocViewView:OnDraw(CDC* pDC)CDocViewDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data herepDoc-DrawLine(pDC);pDoc-DrawText(pDC);5修改视类成员函数OnDraw() 返回第2章第3章 对话框与控件,内容摘要: 1.使用对话框与控件 2.模态对话框 3.非模态对话框 4.进度条对话框 5.属性页对话框 6.使用通用对话框,返回目录,3.1 使用对话框与控件,3.1,程序的实现步骤 利用AppWizard生成多文档程序(Dialog ) 编辑口令对话框资源 添加控件关联变量 添加代码,返回第3章,步骤1 生成程序框架(Dialog ),项目名称: Dialog 选择多文档界面应用程序(Multiple document),3.1,步骤2 编辑口令对话框资源,添加控件: IDC_STATIC Static Text Caption:请输入口令 IDC_STATIC Static Text Caption:口令为一个0 - 9999之间的整数 Client edge、Static edge和Modal frame选中 IDC_PASSWORD_EDIT Edit Box Password :选中 IDOK Button Caption:确定 IDCANCEL Button Caption:取消,3.1,ID: IDD_PASSWORD_DIALOG Caption: “口令” Class: CPasswordDialog,步骤3 添加控件关联变量,3.1,IDC_PASSWORD_EDIT int m_Password Minimum Value : 0 Maximum Value : 9999,步骤4 显示对话框,在文件Dialog.cpp的头部,加入下面的包含语句 #include “PasswordDialog.h”,步骤4 显示对话框,3.1,BOOL CDialogApp:InitInstance() CPasswordDialog cDlg; /声明CPasswordDialog类的一个对象 if( cDlg.DoModal() = IDOK ) /用户按了确定按钮 if( cDlg.m_Password != 1925 ) /口令为整数1925 /如果口令不对,则显示出错信息,然后程序结束 AfxMessageBox(“口令错误,确定后将退出程序。“); return FALSE; else /如果按下取消按钮,程序也结束 return FALSE; return TRUE; ,3.2 模态对话框,3.2,概念 模态对话框弹出后,独占了系统资源,只有在关闭该对话框后才可能继续执行程序的其他代码,不能够在关闭对话框之前执行应用程序其他部分的代码。模态对话框一般要求用户做出某种选择,如前面例程中的口令对话框将一直出现并等待用户输入口令 。,返回第3章,程序的实现步骤,3.2,在上一节程序的基础上 添加菜单资源和菜单响应函数 编辑对话框资源和创建对话框类 添加消息响应函数和代码,步骤1 添加菜单资源和菜单响应函数,在“查看(V)”菜单中添加以下菜单项 Separator ID_VIEW_MODALDIALOG 模态对话框(&M) ID_VIEW_MODALLESSDIALOG 非模态对话框(&E) ID_VIEW_PROGRESSDIALOG 进度条对话框(&R) ID_VIEW_PROPERTIES 属性页对话框(&P) ID_VIEW_COMMONDIALOG 通用对话框(&C),3.2,步骤2 编辑对话框资源,IDC_SEX1 Radio Button Caption: 男 Group:选中 IDC_SEX2 Radio Button Caption: 女 IDC_INSTEREST1 Check Box Caption: 登山 Group:选中 IDC_INSTEREST2 Check Box Caption: 游泳 IDC_INSTEREST3 Check Box Caption: 看书 IDC_INSTEREST4 Check Box Caption: 玩游戏 IDC_COMBO Combo Box IDC_EDIT Edit Box,3.2,ID: IDD_MODAL_DIALOG Caption: “Modal Dialog” Class: CDialogModal 添加控件:,步骤3 添加控件关联变量,3.2,IDC_COMBO CComboBox m_Combo; IDC_SEX1 CButton m_Radio; IDC_EDIT CString m_Edit;,步骤4 显示对话框,1. 菜单响应函数,void CDialogView:OnViewModaldialog() CDialogModal m_Dlg; m_Dlg.DoModal(); ,3.2,2. 对话框响应函数,BOOL CDialogModal:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here m_Radio.SetCheck(1); /把“男“设置为默认值 m_Combo.InsertString(0,“小学“); /往Combo Box加入选项 m_Combo.InsertString(1,“初中“); m_Combo.InsertString(2,“高中“); m_Combo.InsertString(3,“大学“); m_Combo.InsertString(4,“本科以上.“); m_Combo.SetCurSel(0); /把“小学“设置为默认值 return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE ,void CDialogModal:OnOk() / TODO: Add your control notification handler code here CString str; str.Empty(); if(m_Radio.GetCheck() str += “先生“; else str += “小姐“; str += “你好,你的爱好:“; BOOL flag=0; CButton *p; /得到指向IDC_INSTEREST1的指针 p = (CButton *)GetDlgItem(IDC_INSTEREST1); if(p-GetCheck() /判断“登山“是否被选中 str += “登山 “; flag = 1; /得到指向IDC_INSTEREST2的指针 p = (CButton *)GetDlgItem(IDC_INSTEREST2); if(p-GetCheck() /判断“游泳“是否被选中 str += “游泳 “; flag = 1; /得到指向IDC_INSTEREST3的指针 p = (CButton *)GetDlgItem(IDC_INSTEREST3); if(p-GetCheck() /判断“看书“是否被选中 str += “看书 “; flag = 1; /得到指向IDC_INSTEREST4的指针 p = (CButton *)GetDlgItem(IDC_INSTEREST4); if(p-GetCheck() /判断“玩游戏“是否被选中 str += “玩游戏 “; flag = 1; if (!flag) str += “不知道“; str += “,学历:“; int number; CString temp; number = m_Combo.GetCurSel(); /得到当前被选中项的序号 m_Combo.GetLBText(number,temp); /得到序号为number的项的內容 str += temp; m_Edit = str; UpdateData(false); /更新文本框中的内容 ,3.2,3.3 非模态对话框,3.3,概念 非模态对话框弹出后,程序可以在不关闭该对话框的情况下继续执行,在转入到应用程序其他部分的代码时可以不需要用户做出响应。非模态对话框一般用来显示信息,或者实时地进行一些设置。,返回第3章,程序的实现步骤,3.2,在上一节程序的基础上 编辑对话框资源和创建对话框类 显示非模态对话框 实现对话框的功能,步骤1 编辑对话框资源,3.3,ID: IDD_MODALLESS_DIALOG Caption: “Modalless Dialog” Class: CDialogModalless 添加控件:,步骤2 显示非模态对话框,3.3,1在视类中添加对话框成员指针 ,并包含对话框头文件 public: CDialogModalless* m_pModallessDlg; 并包含对话框头文件 #include“DialogModalless.h” 2添加消息响应函数,3.3,void CDialogView:OnViewModallessdialog() / TODO: Add your command handler code here /如果指针指向NULL,说明对话框还没有创建,则动态创建 if(m_pModallessDlg=NULL) m_pModallessDlg=new CDialogModalless; m_pModallessDlg-Create(IDD_MODALLESS_DIALOG,this); /显示非模态对话框 m_pModallessDlg-ShowWindow(SW_SHOW); ,3.3,CDialogView:CDialogView() / TODO: add construction code here m_pModallessDlg = NULL; /初始化指针 CDialogView:CDialogView() if(m_pModallessDlg != NULL) delete m_pModallessDlg; /释放空间 ,3修改视类的构造函数和析构函数,步骤3 实现对话框的功能,3.3,1添加控件关联变量 控件 变量类型 变量名 IDC_LIST CListCtrl m_List IDC_Tree CTeeCtrl m_Tree,2. 添加消息响应函数,BOOL CDialogModalless:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here /往List控件中插入一列 m_List.InsertColumn(0, “文件名“, LVCFMT_LEFT, 150, -1); TV_INSERTSTRUCT TreeItem; HTREEITEM hTreeItem; TreeItem.hInsertAfter = TVI_LAST; TreeItem.item.mask = TVIF_TEXT|TVIF_PARAM; /第一级 CString str = “D:“; TreeItem.hParent = TVI_ROOT; /父级为根部 TreeItem.item.pszText = str.GetBuffer(50); /设置字符缓冲区的大小并赋值 TreeItem.item.lParam = 1; /对于根目录,设置为1 hTreeItem = m_Tree.InsertItem( / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE ,3.3,void CDialogModalless:OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult) NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; / TODO: Add your control notification handler code here CString temp,str; /获取当前被选择的tree view项 HTREEITEM CurItem = m_Tree.GetSelectedItem(); TV_ITEM TreeItem; TreeItem.hItem = CurItem; m_Tree.GetItem( ,3.3,3.4 进度条对话框,3.4,程序的实现步骤 在上一节程序的基础上 编辑对话框资源和创建对话框类 显示进度条对话框 实现对话框的功能,返回第3章,步骤1 编辑对话框资源,3.4,ID: IDD_PROGRESS_DIALOG Caption: “Progress Dialog” Class: CDialogProgress 添加控件:,步骤2 显示进度条对话框,3.4,1在视类中包含对话框头文件 #include “DialogProgress.h“ 2添加消息响应函数,void CDialogView:OnViewProgressdialog() / TODO: Add your command handler code here CDialogProgress dlg; dlg.DoModal(); ,步骤3 实现对话框的功能,3.4,1添加控件关联变量 控件 变量类型 变量名 IDC_PERCENT_SPIN CSpinButtonCtrl m_Spin IDC_PROGRESS CProgressCtrl m_Progrees IDC_TIME_SLIDER CSliderCtrl m_Time,2. 添加消息响应函数,BOOL CDialogProgress:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here m_Spin.SetRange(1,50); /给Spin控件设置数值范围 /把文本框的初始值设为1 GetDlgItem(IDC_EDIT)-SetWindowText(“1“); m_Time.SetRange( 0, 10 ); /设置滑动的数值范围 m_Time.SetPos( 1 ); /设滑动控件的初始值设为1 m_Progress.SetRange( 0, 100 ); /设进度条的数值范围 return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE ,3.4,void CDialogProgress:OnProgressButton() / TODO: Add your control notification handler code here CString temp; GetDlgItem(IDC_EDIT)-GetWindowText(temp); /得到文本框中的内容 int percent = atoi(temp); if( (percent 50) ) /判断文本框中的内容是否在设定的范围之内 MessageBox(“输入的数据超出范围!“,“Waring“,MB_ICONWARNING|MB_OK); GetDlgItem(IDC_EDIT)-SetFocus(); /把焦点设在文本框上 return; /中断程序的运行,返回 int nPercent, nTime, nCurPos = 0; nPercent = m_Spin.GetPos(); /得到Spin控件的值 nTime = m_Time.GetPos(); /得到滑动条上当前的值 m_Progress.SetPos( 0 ); /设置进度条当前的位置为0 while( (nCurPos+=nPercent) 100 ) m_Progress.OffsetPos( nPercent ); /在进度条上偏移nPercent位置 Sleep( 1000 * nTime / 10 ); /延迟一定的时间间隔 m_Progress.SetPos( 100 ); /设置进度条当前的位置为100 ,3.4,3.5 属性页对话框,3.5,概念 属性页对话框将多个对话框集中起来,通过标签或按钮来激活各个页面。主要分为一般属性页对话框和向导对话框两类。在一般属性页对话框中,页面的切换通过点击不同的标签实现,在向导对话框中,页面的选择是通过点击“上一页”(Back)、“下一页”(Next)、“完成”(Finish)和“取消”(Cance)等按钮实现的。,返回第3章,程序的实现步骤,3.5,在上一节程序的基础上 编辑对话框资源和创建对话框类 显示属性页对话框 实现对话框的功能,步骤1 编辑对话框资源,3.5,ID: IDD_TAB_DIALOG Caption: “Tab Dialog” Class: CDialogTab 添加控件:,步骤2 显示属性页对话框,3.5,1在视类中包含对话框头文件 #include “DialogTab.h“ 2添加消息响应函数,void CDialogView:OnViewTab() / TODO: Add your command handler code here CDialogTab dlg; dlg.DoModal(); ,步骤3 实现对话框的功能,3.5,1添加控件关联变量 控件 变量类型 变量名 IDC_SCROLLBAR CScrollBar m_ScrollBar IDC_TAB CTabCtrl m_Tab,2. 添加消息响应函数,BOOL CDialogTab:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here /对Tab控件进行初始化 TC_ITEM *m_pTCItem; m_pTCItem = new TC_ITEM; m_pTCItem-mask = TCIF_TEXT; /接收的值为文本 m_pTCItem-pszText = “学生守则“; /标签的名字 m_Tab.InsertItem(0,m_pTCItem); /插入一个新的标签 m_pTCItem-pszText = “市民公约“; m_Tab.InsertItem(1,m_pTCItem); /显示IDC_STATIC1、IDC_SCROLLBAR两个控件 GetDlgItem(IDC_STATIC1)-ShowWindow(SW_SHOW); GetDlgItem(IDC_SCROLLBAR)-ShowWindow(SW_SHOW); /隐藏IDC_STATIC2控件 GetDlgItem(IDC_STATIC2)-ShowWindow(SW_HIDE); /对滚动条进行初始化 m_ScrollBar.SetScrollRange(1,10); /设置滚动条的范围 m_ScrollBar.SetScrollPos(1); /设置当前滚动条的位置 return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE ,3.5,void CDialogTab:OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code here /当前Tab控件所选中的标签 if( m_Tab.GetCurSel() = 0 ) /显示IDC_STATIC1、IDC_SCROLLBAR两个控件 GetDlgItem(IDC_STATIC1)-ShowWindow(SW_SHOW); GetDlgItem(IDC_SCROLLBAR)-ShowWindow(SW_SHOW); /隐藏IDC_STATIC2控件 GetDlgItem(IDC_STATIC2)-ShowWindow(SW_HIDE); else /隐藏IDC_STATIC1、IDC_SCROLLB
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:大学VISUAL C++ 6.0实例教程课件-课件PPT
链接地址:https://www.renrendoc.com/p-21836072.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!