VC++6.0基于对话框风格曲柄滑块机构编程
- 格式:pdf
- 大小:514.71 KB
- 文档页数:10
桂林电子科技大学信息科技学院2011级面向对象实训任务书
文本编辑器
一:基本任务
设计一个基于对话框的文本编辑器,实现常用文本编辑器的基本功能。
二:要求和评分标准
1、基本要求
(1) 按照题目要求独立设计文本编辑器所需的所有按钮,并完成程序源码编写、调试及关键代码注释。
(40分)
(2)能够实现文本文档的创建与保存。
(10分)
(3)能够实现文本信息的编辑。
(15分)
(4)能够实现文字的字体、颜色等设置。
(15分)
2、发挥部分
能够实现文本编辑器的其它功能。
(20分)
三、实训报告格式
1、任务题目;
2、性能、指标、要求;
3、方案设计:
①方案论证
②工作原理
4、软件设计
5、制作与调试过程;
6、实训心得体会。
1。
Visual Basic 6.0 程序设计教程第三版课程设计一、课程设计背景Visual Basic 6.0 是一款经典的可视化编程语言,被广泛应用于系统开发、数据库编程以及游戏开发中。
本课程设计将帮助学生巩固和提高在 Visual Basic 6.0 程序设计方面的基本知识和能力,通过实际项目开发提升学生的编程能力,锻炼学生的编程思维和实践操作能力。
二、课程设计目标•理解和掌握 Visual Basic 6.0 的基础知识和编程思想。
•能够基于 Windows 平台,熟练应用 Visual Basic 6.0 进行程序设计。
•能够在项目开发中独立完成程序设计和开发工作,并能够解决实际问题。
•熟练掌握 Visual Basic 6.0 程序设计中的常用语法、控件和技术。
三、课程设计要求1. 项目选题本次课程设计,要求学生根据自己的兴趣和实际需求,选择一个 Visual Basic 6.0 程序设计项目,可以是简单的小工具或游戏,也可以是相对复杂的系统应用。
2. 项目内容根据选题内容,要求学生完成以下任务:1.设计项目界面,确定相关控件和布局;2.设计项目数据结构,确定需要存储的数据;3.编写代码,实现项目的基本功能;4.完善代码,优化用户体验和程序性能;5.测试和调试项目,确保项目能够稳定运行。
3. 项目提交学生要求在课程设计规定时间内,将课程设计项目提交到指定邮箱或在线平台。
提交内容包括以下内容:1.项目说明文档,包括项目选题、项目界面设计说明、数据结构说明、程序功能说明和开发经验分享等;2.项目源代码和编译后的可执行文件;3.项目演示视频或截图,展示项目界面和功能特点。
四、课程设计参考资源以下是一些 Visual Basic 6.0 程序设计的参考资源,可以帮助学生更好地完成课程设计:1.《Visual Basic 6.0 程序设计教程》(第三版),作者:徐琦2.《Visual Basic 6.0 从入门到精通》,作者:王拓3.Microsoft 官方文档和示例代码,包括 MSDN 和 Visual Studio 等资源。
VC6.0编的“文件读写”的两种方式(MFC和基于对话框)软件实验三:基于对话框的MFC程序实现文件读写操作实例一:操作步骤:1、新建“MFC APPWIZARD(EXE)”,选择文件路径,输入文件名,选择应用程序类型为“基本对话框”,按上图添加各控件2、按下表修改各控件的ID号,添加成员函数和消息函数控件的ID号,选择mumber variables面板,单击add variable按钮,添加成员变量,并选择变量类型。
3、写入文件1)在“基于对话框的文件读写Dlg.h”文件中定义变量(粗体字为此处添加的代码)class CMyDlg : public CDialog{// Constructionpublic://定义变量CString strFileName;//文件名CString strFilePath;//文件路径BOOL IsTextFile(CString& rFile);//判断文件类型是否正确CMyDlg(CWnd* pParent = NULL); // standard constructor………}2)双击下压按钮“写入文件”,编写“写入文件”的消息处理函数void CMyDlg::OnButtonWrite() //单击“写入到文件”按钮{// TODO: Add your control notification handler code hereUpdateData(true);CFile file;CFileDialog filedlg(0,//1-文件打开,0-文件另存为".txt|*.*",NULL,OFN_OVERWRITEPROMPT,"文本文件(*.txt)|*.txt|All Files(*.*)|*.*||",NULL);if(filedlg.DoModal()==IDOK)strFileName=filedlg.GetFileName();//获得文件名if(strFileName==""){AfxMessageBox("请输入文件名");return;}file.Open(strFileName,CFile::modeCreate|CFile::modeWrite);//将数据写入文件int length=m_WriteString.GetLength();//获取文件长度file.Write((LPCTSTR)m_WriteString,length);//获取有关文件的信息CString AfxMessageBox("已保存到文件:"+strFileName+"!");//保存结束提示strFilePath=file.GetFilePath();//获得文件的路径file.Close();//关闭文件}4、查看文件路径双击下压按钮“查看文件路径”,编写“查看文件路径”的消息处理函数void CMyDlg::OnButtonFilepath() //查看文件路径{// TODO: Add your control notification handler code herem_FilePath=strFilePath;UpdateData(false);}5、读入文件1)定义判断文件类型是否正确的函数(粗体字为此处添加的代码)class CMyDlg : public CDialog{// Constructionpublic://定义变量CString strFileName;//文件名CString strFilePath;//文件路径BOOL IsT extFile(CString& rFile);//判断文件类型是否正确CMyDlg(CWnd* pParent = NULL); // standard constructor………}2)编写IsTextFile函数BOOL CMyDlg::IsTextFile(CString &rFile)//判断文件类型是否正确{CStringList strList;CString str(rFile);strList.AddHead(".TXT");strList.AddHead(".SYS");strList.AddHead(".BA T");strList.AddHead(".DA T");str=str.Right(4);//文件名的右边四位字符str.MakeUpper();//转换成大写return(strList.Find(str))?TRUE:FALSE;}3)在“基于对话框的文件读写Dlg.cpp”文件开头添加头文件#include "fstream.h"//添加的头文件4)单击下压按钮“读入文件”,编写下压按钮“读入文件”的消息函数void CMyDlg::OnButtonRead(){// TODO: Add your control notification handler code herefstream f1;//定义文件流对象char s[200];CFileDialog filedlg(1,//1-文件打开,0-文件另存为".txt|*.*",NULL,OFN_OVERWRITEPROMPT,"文本文件(*.txt)|*.txt|All Files(*.*)|*.*||",NULL);if(filedlg.DoModal()==IDOK){UpdateData(true);strFileName=filedlg.GetFileName();//获得文件名if(!IsTextFile(strFileName))//判断文件类型是否正确{AfxMessageBox("文件类型不正确");return;}f1.open(strFileName,ios::in|ios::nocreate);while(!f1.eof()){f1.getline(s,255);m_strRead=m_strRead+"\r\n"+s;//添加文件中的文本到编辑框UpdateData(false);}AfxMessageBox(strFileName+"文件读入完毕");//保存结束提示f1.close();//关闭文件流}}6、运行程序1)在写入文件的编辑框中输入内容,单击“写入文件”按钮,并可选择路径保存该文件。
Visual Basic程序设计教程6.0版教学设计1. 引言Visual Basic 6.0是一款经典的Microsoft Windows应用程序开发环境,适用于快速创建基于Windows的图形用户界面应用程序。
它已经成为了现代软件开发的重要组成部分。
在本教学设计中,我们将介绍如何使用Visual Basic 6.0来创建Windows应用程序。
我们将从基础语法和控件开始,然后逐渐引入更高级的主题,如数据库编程和COM组件。
我们会提供丰富的示例代码和实践性任务。
本教学设计面向没有或只有少量编程经验的学习者,期望能够帮助他们了解如何使用Visual Basic 6.0来实现各种操作。
我们还假定学习者已经熟悉了Windows操作系统,因为这对于理解VB程序开发和调试非常重要。
2. 教学目标本教学设计的目标是使学员理解以下内容:•Visual Basic 6.0的开发环境和常见工具•VB程序语法,包括控件和事件•数据库编程的基础知识和技术•如何创建和使用COM组件3. 教学内容和方式3.1 Visual Basic 6.0的开发环境和常见工具本节将介绍VB 6.0的主要开发环境和常用工具。
我们将学习如何创建和保存项目,以及如何正确组织和管理项目文件。
我们还将介绍VB6.0的常用工具,如代码编辑器、对象浏览器和调试器。
3.2 VB程序语法,包括控件和事件本节将介绍VB6.0的基础语法,包括变量、数据类型、运算符和流程控制结构。
我们还将学习如何使用VB6.0中的控件和事件来实现用户交互。
最后,我们将演示如何利用VB6.0的自动化对象来实现Office应用程序的自动化。
3.3 数据库编程的基础知识和技术本节将介绍数据库编程的基础知识和技术,将以Microsoft Access作为数据库应用程序,介绍使用VB6.0 Open Database Connectivity(ODBC)组件来访问数据库操作的基础知识和技术。
第6章创建和使用对话框对话框是一种用户界面,几乎每一个Windows程序都使用对话框与用户进行交互。
对话框可能是一个简单的只含有OK按钮的消息框,也可以是一个复杂的数据输入表单。
对话框上有一些方便用户输入的控件,对话框依靠这些控件与用户进行交互,其实质是一个接收消息的窗口。
在本章节我们主要讲述模式对话框和无模式对话框的原理和使用方法,下一章将详细介绍各种控件的使用。
你将学习创建一个对话框,使用对话框模板编辑一个对话框资源,并在程序中调用对话框的方法。
6.1 对话框的基本原理6.1.1 对话框的工作原理在创建一个对话框之前,我们先来了解一下对话框是如何工作的,对话框的数据来自三方面:对话框资源、对话框对象、和一个文档对象:1.对话框资源对话框资源是一个用户输入或取得数据的图形界面。
这个图形界面是使用Develop Studio的对话框编辑器在对话框模板上创建的,程序员可以在对话框模板上增加并编辑控件,生成对话框资源。
当应用程序运行时,就可以得到一个对话框。
2.对话框对象MFC使用CDialog类来描述对话框,它是CWnd类的派生类。
在CWnd类的基础上增加了数据交换的功能。
当创建一个新的对话框资源后,使用ClassWizard可以创建一个对话框类的派生类。
对话框对象实现了对话框和应用程序之间的通信。
在应用程序中定义一个对话框对象后,在对话框显示前,可以通过访问对话框对象的成员变量为一个对话框的控件初始化,在对话框关闭后,可以通过访问对话框对象的成员变量获得用户的输入数据。
3.文档对象MFC使用文档对象描述应用程序处理的数据,用户输入的数据要进一步的处理,通常要先存贮到文档对象中。
例如:一个学生记录处理的应用程序,用户通过一个对话框输入学生记录并贮存到一个文件中。
应用程序的处理顺序是:用户在对话框中输入信息,通过对话框对象得到输入信息,将输入信息整理到文档对象中,使用序列化函数将文档对象存贮到一个文件中,所以文档对象扮演了一个很重要的数据交换的角色。
VC++MFC基于对话框简单计算器设计1 实现计算器功能如图:用VC++建立MFC基于对话框的简单计算器。
简易计算器设计说明:1.三个编辑窗口:(1)其中两个为输入操作窗口:数1、数2,一个结果输出窗口。
(2)只有一个操作数时在第一操作窗口输入。
(3)键盘输入数据,运算符按钮输出结果。
2.多个运算操作按钮:(1)实现加减乘除的基本计算器功能。
(2)实现三角函数、对数、阶乘等的数值函数运算。
3.计算器设计过程:(1)首先建立MFC的基于对话框程序,命名为“TEST1”然后在对话框中加入三个编辑框,并用快捷键CTRL+W组合键打开MFC ClassWizard 切换到Member Variables中其中找到IDC_EDIT1、IDC_EDIT2、IDC_EDIT3分别添加对应的3个double型关联变量m_EDIT1_NUM、m_EDIT2_NUM、m_EDIT3_NUM。
关联变量:在后双击编辑框改变编辑框函数名并添加函数:UpdateData(TRUE);其他两个编辑框均进行此操作。
(2)在对话框中的适当位置添加20个按钮控件实现运算操作:a.操作说明按钮:鼠标放在按钮控件上,右击鼠标点击属性,改变按钮属性标题为“操作说明”,然后双击控件改变函数名并点击“确定”添加函数代码:void CTEST1Dlg::OnINTR() //计算器操作说明{// TODO: Add your control notification handler code hereMessageBox("例如M+N=?,在第一个编辑框输入M,第二个编辑框输入N,然后再点击运算符输出结果,减法、乘法、除法、取余等两个数运算的同理。
只有一个数进行运算的时候,在第一个编辑框输入数,然后点击运算符输出结果!");}b.两个数运算的按钮:与添加“操作说明”按钮类似,比如加法,改变按钮属性标题为“+”,然后双击控件添加函数代码:void CTEST1Dlg::OnADD() //加法运算:m+n{// TODO: Add your control notification handler code herem_EDIT3_NUM=m_EDIT1_NUM+m_EDIT2_NUM; //m_EDIT3_NUM、m_EDIT1_NUM、m_EDIT2_NUM为三个编辑框的对应关联变量GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW); //当执行双数运算时,重新显示第二个编辑框UpdateData(FALSE);}其他的两个数运算的同理。
附录表一、具体步骤:1、选择菜单栏的“新建”,选择MFC项目名为DrawGraphics,并设置为基于对话框的项目,如图-1、图-2所示;图-1图-22、按下键盘上的Ctrl+W键,调出类向导,选择“Add Class”,并点击“New”添加一个颜色按钮类CColorButton,继承自CButton类,如图-3所示:图-33、在CColorButton中添加如下成员变量:COLORREF color; //按钮颜色CPoint arrays[4]; //按钮顶点坐标BOOL IsShow; //是否显示按钮BOOL IsPressed; //按钮是否被按下4、右击CColorButton类,选择Add Virtulfunction ,重写其DraItem函数,如图-4,图-5所示:图-4图-55、为其Drawitem函数中添加如下代码:CRect rect;GetClientRect(rect);CDC dc;dc.Attach(lpDrawItemStruct->hDC);arrays[0]=CPoint(rect.left,rect.top);arrays[1]=CPoint(rect.right,rect.top);arrays[2]=CPoint(rect.right,rect.bottom);arrays[3]=CPoint(rect.left,rect.bottom);//设置背景透明dc.SetBkMode(TRANSPARENT);if (IsShow){//创建一个位图画刷CBrush brush(color);dc.SelectObject(&brush);CPen pen(PS_NULL,1,color);dc.SelectObject(&pen);dc.Rectangle(rect);if(IsPressed){CPen pen(PS_DASHDOTDOT,3,RGB(0,0,0));dc.SelectObject(&pen);dc.MoveTo(arrays[0]);for(int i=1;i<4;i++){dc.LineTo(arrays[i]);}dc.LineTo(arrays[0]);}else{CPen pen(PS_DASHDOTDOT,2,color);dc.SelectObject(&pen);dc.MoveTo(arrays[0]);for(int i=1;i<4;i++){dc.LineTo(arrays[i]);}dc.LineTo(arrays[0]);}//绘制按钮文本CString str;GetWindowText(str);dc.SetTextColor(RGB(255-GetRValue(color),255-GetGValue(color),255-GetBValue (color)));dc.DrawText(str,CRect(0,0,rect.right,rect.bottom),DT_CENTER|DT_VCENTER|DT_S INGLELINE);}6、为CColorButton添加属性设置函数:void CColorButton::SetDrawColor(COLORREF m_color,BOOL IsShow){this->color = m_color;this->IsShow=IsShow;}7、为CColorButton添加WM_LBUTTONDOWN和WM_LBUTTONUP消息,其消息处理函数如下:void CColorButton::OnLButtonDown(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultIsPressed = true;CButton::OnLButtonDown(nFlags, point);}void CColorButton::OnLButtonUp(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultIsPressed = false;CButton::OnLButtonUp(nFlags, point);}8、为DrawGraphics项目的中的对话框资源拖拽如下控件,如图-6所示,并按表-1设置其相关ID;图-6ID 作用及类别IDC_RADIO_RECT 矩形单选按钮IDC_RADIO_ROUND 圆形单选按钮IDC_RADIO_LINE 直线单选按钮IDC_RADIO_SELF 涂鸦单选按钮IDC_RADIO_SLOIDLINE 实线单选按钮IDC_RADIO_DOTTEDLINE 虚线单选按钮表-19、打开类向导,按图-7所示,为相关控件添加关联成员:10、在CDrawGraphicsDlg 类的OninitDialog 函数中添加初始化代码: BOOL CDrawGraphicsDlg:OnInitDialog() {/*.........省略无关代码...............................................................*/// TODO: Add extra initialization hereCButton *cb; //设置相关按钮的默认选中状态 cb=(CButton *)GetDlgItem(IDC_RADIO_RECT); cb->SetCheck(1);cb=(CButton *)GetDlgItem(IDC_RADIO_SLOIDLINE); cb->SetCheck(1);IDC_COMBO_LINEVALUE 线条粗细下拉列表 IDC_STATIC_LINEEXAMPLE 显示线条粗细的Picture 控件 IDC_CHECK_BORDER 是否有边界复选框 IDC_RADIO_SOLID 填充单选按钮 IDC_RADIO_GRADIENT 渐变单选按钮 IDC_RADIO_NULL 无填充单选按钮 IDC_BUTTON_FORECOLOR 前景色按钮 IDC_BUTTON_BKCOLOR 背景色按钮 IDC_RADIO_PEN 画笔单选按钮 IDC_RADIO_CLEAR 清空画板单选按钮 IDC_STATIC_GRAPHICS 画板区(Picture 控件)cb=(CButton *)GetDlgItem(IDC_CHECK_BORDER);cb->SetCheck(1);cb=(CButton *)GetDlgItem(IDC_RADIO_SOLID);cb->SetCheck(1);cb=(CButton *)GetDlgItem(IDC_RADIO_PEN);cb->SetCheck(1);m_ComboLineValue.SetCurSel(3);m_ForeColor=RGB(255,0,0);m_BkColor=RGB(0,0,255);m_ForeCButton.SetDrawColor(m_ForeColor,TRUE); //设置前背景色按钮的颜色m_BkCButton.SetDrawColor(m_BkColor,TRUE);m_IsPressed=FALSE;m_nWidth=4;m_nPenStyle=PS_SOLID;return TRUE; // return TRUE unless you set the focus to a control}10、为CDrawGraphicsDlg添加WM_LBUTTONDOWN和WM_LBUTTONUP,WM_MOUSEMOVE消息,其消息处理函数如下:void CDrawGraphicsDlg:OnLButtonDown(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultm_IsPressed=TRUE;SetCursor(m_Hcursor);if (IsDlgButtonChecked(IDC_RADIO_SELF)){m_pOld=point;}else if (IsDlgButtonChecked(IDC_RADIO_LINE)){m_pOld=point;m_PointOrigin=point;}else if (IsDlgButtonChecked(IDC_RADIO_RECT)){m_pOld=point;m_PointOrigin=point;}else if (IsDlgButtonChecked(IDC_RADIO_ROUND)){m_pOld=point;m_PointOrigin=point;}CDialog::OnLButtonDown(nFlags, point);}void CDrawGraphicsDlg:OnLButtonUp(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call default m_IsPressed=FALSE;ClipCursor(NULL); //解除鼠标的限定CClientDC dc(this);CPen pen(m_nPenStyle,m_nWidth,m_ForeColor);dc.SelectObject(&pen);if (IsDlgButtonChecked(IDC_RADIO_LINE)) //选择的为画直线{dc.SetROP2(R2_NOT); //逆转当前屏幕颜色来画线的绘图方式dc.MoveTo(m_PointOrigin);dc.LineTo(m_pOld);//擦去上一次的临时线dc.SetROP2(R2_COPYPEN);//缺省绘图模式,像素为画笔颜色dc.MoveTo(m_PointOrigin);dc.LineTo(point);//绘制固定线}else if (IsDlgButtonChecked(IDC_RADIO_RECT)) //选择的为画矩形 {dc.SelectObject(GetStockObject(NULL_BRUSH));//选择空话刷dc.SetROP2(R2_NOT);CRect Oldrect(m_PointOrigin,m_pOld);dc.Rectangle(&Oldrect); //清除之前的矩形绘图dc.SetROP2(R2_COPYPEN);CBrush brush(m_BkColor);dc.SelectObject(&brush); //画这次的矩形if (IsDlgButtonChecked(IDC_RADIO_NULL)) //如果选择无填充的话,使用空画刷dc.SelectObject(GetStockObject(NULL_BRUSH));CRect Nowrect(m_PointOrigin,point);dc.Rectangle(&Nowrect);if (IsDlgButtonChecked(IDC_RADIO_GRADIENT))//如果选择渐变的话,调用渐变函数DrawGradient(dc.GetSafeHdc(),Nowrect,m_ForeColor,m_BkColor,1);}else if(IsDlgButtonChecked(IDC_RADIO_ROUND))//如果选择绘制椭圆{dc.SelectObject(GetStockObject(NULL_BRUSH));dc.SetROP2(R2_NOT);CRect Oldrect(m_PointOrigin,m_pOld);dc.Ellipse(&Oldrect);dc.SetROP2(R2_COPYPEN);CBrush brush(m_BkColor);dc.SelectObject(&brush);if (IsDlgButtonChecked(IDC_RADIO_NULL))dc.SelectObject(GetStockObject(NULL_BRUSH));CRect Nowrect(m_PointOrigin,point);if (IsDlgButtonChecked(IDC_RADIO_GRADIENT))//如果选择渐变的话,调用渐变函数DrawGradient(dc.GetSafeHdc(),Nowrect,m_ForeColor,m_BkColor,1);dc.Ellipse(&Nowrect);}InvalidateMyRect();//刷新工具区CDialog::OnLButtonUp(nFlags, point);}void CDrawGraphicsDlg:OnMouseMove(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultif (m_IsPressed&&point.x>205)//如果鼠标移动位置到达画板区{CRect rect;m_Graphics.GetClientRect(&rect);m_Graphics.ClientToScreen(&rect);ClipCursor(rect);//限定光标在指定矩形}CClientDC dc(this);if (m_IsPressed&&IsDlgButtonChecked(IDC_RADIO_SELF))//如果选择了涂鸦{CPen pen(m_nPenStyle,m_nWidth,m_ForeColor); //创建画笔dc.SelectObject(&pen); //选入画笔dc.MoveTo(m_pOld);dc.LineTo(point);//绘制轨迹m_pOld=point;//将当前点设置为旧点}else if(m_IsPressed&&IsDlgButtonChecked(IDC_RADIO_LINE))//如果选择了直线{dc.SetROP2(R2_NOT);//逆转当前屏幕颜色来画线的绘图方式dc.MoveTo(m_PointOrigin);dc.LineTo(m_pOld); //擦去上一次的线dc.MoveTo(m_PointOrigin);dc.LineTo(point);//绘制这一次的临时线m_pOld=point;}else if(m_IsPressed&&IsDlgButtonChecked(IDC_RADIO_RECT))//如果选择了矩形 {dc.SetROP2(R2_NOT);CPen pen(PS_DOT,1,m_ForeColor);dc.SelectObject(&pen);dc.SelectObject(GetStockObject(HOLLOW_BRUSH));CRect Oldrect(m_PointOrigin,m_pOld);dc.Rectangle(&Oldrect);CRect Nowrect(m_PointOrigin,point);dc.Rectangle(&Nowrect);m_pOld=point;pen.DeleteObject();}else if (m_IsPressed&&IsDlgButtonChecked(IDC_RADIO_ROUND))//如果选择了圆{CClientDC dc(this);dc.SetROP2(R2_NOT);CPen pen(PS_DOT,1,m_ForeColor);dc.SelectObject(&pen);dc.SelectObject(GetStockObject(HOLLOW_BRUSH));CRect Oldrect(m_PointOrigin,m_pOld);dc.Ellipse(&Oldrect);CRect Nowrect(m_PointOrigin,point);dc.Ellipse(&Nowrect);m_pOld=point;pen.DeleteObject();}CDialog::OnMouseMove(nFlags, point);}11、为背景色、前景色、无填充、实线、虚线、边框、清空画板按钮添加按钮单击消息,响应函数如下:void CDrawGraphicsDlg:OnButtonBkcolor(){// TODO: Add your control notification handler code hereCColorDialog cdg;if (cdg.DoModal()==IDOK) //调用颜色对话框{m_BkColor=cdg.GetColor(); //更改背景色m_BkCButton.SetDrawColor(m_BkColor,TRUE);//更改背景色按钮颜色InvalidateMyRect(); //刷新工具区}}void CDrawGraphicsDlg:OnButtonForecolor(){// TODO: Add your control notification handler code hereCColorDialog cdg;if (cdg.DoModal()==IDOK){m_ForeColor=cdg.GetColor();m_ForeCButton.SetDrawColor(m_ForeColor,TRUE);InvalidateMyRect();}}void CDrawGraphicsDlg:OnRadioNull(){// TODO: Add your control notification handler code hereif (!IsDlgButtonChecked(IDC_CHECK_BORDER)) //无填充时不能也无边框{CButton *cb=(CButton *)GetDlgItem(IDC_CHECK_BORDER);cb->SetCheck(1);}}void CDrawGraphicsDlg:OnRadioSloidline(){// TODO: Add your control notification handler code hereCStringstr[9]={"1px","2px","3px","4px","5px","6px","8px","10px","12px"};m_ComboLineValue.ResetContent();for (int i=0;i<9;i++)m_ComboLineValue.AddString(str[i]);m_ComboLineValue.SetCurSel(3);m_nWidth=4;m_nPenStyle=PS_SOLID;InvalidateMyRect();}void CDrawGraphicsDlg:OnRadioDottedline(){// TODO: Add your control notification handler code herefor (int i=11;i>0;i--)m_ComboLineValue.DeleteString(i);m_ComboLineValue.SetCurSel(0);m_nWidth=1;m_nPenStyle=PS_DOT;InvalidateMyRect();}void CDrawGraphicsDlg:OnCheckBorder(){// TODO: Add your control notification handler code hereif (IsDlgButtonChecked(IDC_CHECK_BORDER))m_nPenStyle=PS_SOLID;else{m_nPenStyle=PS_NULL;if (IsDlgButtonChecked(IDC_RADIO_NULL)) //既不能无边框也不能无填充{CButton *cb=(CButton *)GetDlgItem(IDC_CHECK_BORDER);cb->SetCheck(1);}}}void CDrawGraphicsDlg:OnRadioClear(){// TODO: Add your control notification handler code hereInvalidate(TRUE);}12、为选择画笔宽度的下拉列表添加CBN_SELCHAGE消息,消息处理函数如下:void CDrawGraphicsDlg:OnRadioSloidline(){// TODO: Add your control notification handler code hereCStringstr[9]={"1px","2px","3px","4px","5px","6px","8px","10px","12px"};m_ComboLineValue.ResetContent();for (int i=0;i<9;i++)m_ComboLineValue.AddString(str[i]);m_ComboLineValue.SetCurSel(3);m_nWidth=4;m_nPenStyle=PS_SOLID;InvalidateMyRect();}13、为CDrawGraphicsDlg类添加如下的两个自定义函数InvalidateMyRect以及DrawGradient,分别用来刷新工具区和绘制渐变:void CDrawGraphicsDlg:InvalidateMyRect() //将工具区部分刷新{CRect invaRect;invaRect.top=0;invaRect.bottom=500;invaRect.left=0;invaRect.right=205;InvalidateRect(invaRect,TRUE);}void CDrawGraphicsDlg:DrawGradient(HDC pDc, const RECT &rect, COLORREF begin, COLORREF end, const int &width){RECT rcstep; //设置每次填充的矩形HBRUSH br; //创建画刷句柄int n,m;float step=0.0;int nred=0,ngreen=0,nblue=0;float red=0.0,green=0.0,blue=0.0;nred=(GetRValue(begin)-GetRValue(end));ngreen=(GetGValue(begin)-GetGValue(end));nblue=(GetBValue(begin)-GetBValue(end));step=(float)abs(rect.top-rect.bottom)/(float)width;red=nred/(float)step;green=ngreen/(float)step;blue=nblue/(float)step;for (int start=0;start<=step;start++) //一块快绘制矩形{n=min((int)(rect.top+start*width),rect.bottom);m=min((int)(rect.top+(start+1)*width),rect.bottom);::SetRect(&rcstep,rect.left,n,rect.right+1,m);br=CreateSolidBrush(RGB(nred-red*start,ngreen-green*start,nblue-blue*start) ); //选择笔刷颜色HBRUSH oldbr=(HBRUSH)::SelectObject(pDc,br);FillRect(pDc,&rcstep,br);//用新颜色填充矩形区::SelectObject(pDc,oldbr);DeleteObject(br);}}二、运行结果:1、绘图效果:2、选择颜色对话框以及清空画图板功能:。
滑动控件是视窗系统中最常用的控件之一。
一般而言他是由一个滑动条,一个滑块和可选的刻度组成,用户能通过移动滑块在相应的控件中显示对应的值。
通常,在滑动控件附近一定有标签控件或编辑框控件,用于显示相应的值。
滑动控件在应用程式中用途级为广泛,如在桌面的属性中就能看到。
为此,让我们一起来看一下他的实现方法。
(1)在VC++ 6.0中新建一个对话框文件的工程。
(2)打开资源管理器,在对话框中放置一个EDIT控件,然后在他旁边放上一个Slider控件。
基本的框架已完成了。
(3)对Slider控件右击,选择“建立类向导”,对刚才的Slider控件定义一个变量m_Slider,类型为CSliderCtrl。
(4)在对话框初始化的代码BOOL CMy601Dlg::OnInitDialog(),后添加相应的属性。
以下是常用的属性设置函数:* GetRange,SetRange函数用于查询和设置滑动条的取值范围,默认为0~100。
函数定义形式如下:void GetRange(int &nMin,int &nMax) const;void SetRange(int nMin,int nMax,BOOL bRedrGETaw=FALSE);* GetPos,SetPos函数用于查询和设置滑动条的当前值。
函数定义形式如下:int GetPos() const;int SetPos(int nPos);* GetLineSize,SetLineSize函数用于查询和设置在按一下右或左箭头时滑块的移动量,默认为1个单位。
函数定义形式如下:int GetLineSize() const;int SetLineSize(int nSize);* GetPageSize,SetPageSize函数用于查询和设置函滑块和块移动量,块移动量是指当按下PgUp或PgDown时滑块的移动量。
函数定义形式如下:int GetPageSize() const;int SetPageSize(int nSize);* SetTicFreq函数用于设置滑动条刻度的频度。
一、编程工具:VC6.0与VC6.0补丁(解决与office冲突问题)二、VC6.0绘制机器人结构简图操作操作步骤:(1)运行VC6.0,界面如图1所示,红色框内两个图标为安装补丁后,添加文件和打开文件图标。
图1(2)点击菜单中的“File”,选择“New”,弹出图2所示的窗口,选择红色框1中指示的“MFC AppWizard”,在红色框2中指示的“Project name”栏中输入工程名称“DrawRobot”(工程名字可以自己定义),选择合适的保存目录,点击“OK”,进入下一步。
图2(3)在图3中选择红色框1中指示的“Dialog based”,基于对话框编写程序,直接点击“Finish”按钮完成操作(也可以依次点击“Next”,直到最后完成),在弹出的窗口中选择“ok”,进入图4所示的界面。
图3(4)点击工具栏中的“编译”图标,编译程序,点击“运行”图标,程序运行界面如图5所示。
图4(5)在没有任何代码编写或者界面调整的情况下,程序执行界面如图5所示。
图5(6)在图4的窗口中,对对话框进行编辑,拖动窗口大小,添加或删除界面上的控件,如图6所示,删除了界面上的文字描述和“取消”按钮,在右侧控件栏中,选择箭头指示的“Group Box”,按住鼠标左键拖入窗口。
图6(7)删除“Group Box”文字的方法是,右键点击“Group Box”,在弹出菜单中,选择“Properties”,弹出属性设置窗口,ID可以采用默认,清空(或者修改标题值)。
图7(8)与步骤7操作类似,将控件“Static text”拖入窗口区域,删除文字并调整大小,作为绘图区域,不同之处是将控件的ID重新定义为其他值,如“IDC_ DRAW”。
图8(9)添加程序代码,在左侧分页栏中,选择“ClassView”,点击树形列表展开,双击“CDrawRobotDlg”类的名称,右侧主窗口中显示类对应的头文件“DrawRobotDlg.h”,窗口顶部显示文件名称。
曲柄滑块机构c语言编程
【原创版】
目录
1.曲柄滑块机构的概述
2.C 语言编程的基础知识
3.曲柄滑块机构的 C 语言编程实现
4.总结
正文
一、曲柄滑块机构的概述
曲柄滑块机构是一种常见的机械传动装置,主要由曲柄、连杆和滑块组成。
在工程中,曲柄滑块机构常用于将旋转运动转换为直线运动,实现各种设备的速度控制、位置控制等功能。
在实际应用中,曲柄滑块机构的设计和控制至关重要,因此需要对其进行深入研究。
二、C 语言编程的基础知识
C 语言是一种广泛应用于计算机科学、工程技术等领域的高级编程语言。
C 语言编程的基础知识包括数据类型、运算符、控制结构、函数、数组等。
学习 C 语言编程,需要掌握这些基础知识,并熟练运用到实际编程中。
三、曲柄滑块机构的 C 语言编程实现
在工程中,为了实现对曲柄滑块机构的精确控制,可以使用 C 语言编写程序来模拟其运动过程。
具体实现步骤如下:
1.首先,需要建立曲柄滑块机构的数学模型,描述其运动规律。
这通常包括曲柄的旋转角度、滑块的位移等参数。
2.其次,利用 C 语言编写程序,实现对曲柄滑块机构的控制。
程序
中需要包含数据的输入、处理和输出等功能,以实现对曲柄滑块机构的精确控制。
3.最后,通过仿真软件对 C 语言程序进行验证,以确保其能够正确
地模拟曲柄滑块机构的运动过程。
四、总结
曲柄滑块机构是一种重要的机械传动装置,在工程中具有广泛的应用。
通过 C 语言编程,可以实现对曲柄滑块机构的精确控制,提高设备的性
能和效率。
VC中自己创建对话框的方法这里讲在VC中不需要打开MFC工程,通过代码直接创建一个对话框,我看这个对话框比MFC的漂亮多了,而且要写会代码不需要研究MFC就直接开发新的工程.先打开VC++ 6.0 版本, 第一步:创建一个工程名为:Main Dialog的Win32 Application。
创建过程如下:打开File菜单中New,选自Win32 Application,工程名为:Main Dialog,点击OK,再选自A simple Win32 application。
点击Finish,再点击OK.(见图1)第二步:创建资源脚本。
再打开File菜单中New,选自File选项的Resource Script(就是资源脚本),文件名为Dialog,点击OK。
(见图2)第三步:插入对话框。
刚才建立的脚本Dialog显示为Dialog.rc,就在Dialog.rc上面点击鼠标右键Insert(插入)Resource中选自插入Dialog(对话框),点击New(新建),这样对话框插入完毕。
(见图3)第四步:添加resource.h。
我们把第四步插入的对话框ID改为IDD_MAIN ,在FileView中有个Header Files的文件,上面点击右键,选择Add Files to Folder...(添加文件到目录),弹出一个工程目录窗口,中间找到resource.h,然后OK了(添加)。
(见图4)第五步:复制代码。
双击Main Dialog.cpp,我们写代码的位置出现了(见图5),那里有几行代码,把它们全部删掉,下面已经准备好的代码全部复制到那里,编译,执行,您的是否成功了?#include "stdafx.h"#include "resource.h"#include <windowsx.h>BOOL WINAPI Main_Proc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);BOOL Main_OnInitDialog(HWND hwnd,HWND hwndFocus,LPARAM lParam);void Main_OnCommand(HWND hwnd,int id,HWND hwndCtl, UINT codeNotify);void Main_OnClose(HWND hwnd);int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){DialogBox(hInstance,MAKEINTRESOURCE(IDD_MAIN),NUL L,Main_Proc);return 0;}BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){switch(uMsg){HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);}return FALSE;}BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam){return TRUE;}void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify){switch(id){case IDOK:{MessageBox(hwnd,TEXT("Thank you build me!"),TEXT("Happy"),MB_OK);}break;default:break;}}void Main_OnClose(HWND hwnd) {EndDialog(hwnd, 0);}执行以后的对话框图(见图6)是不是比MFC的漂亮!这对话框的缺点就是弹出时不是出现在显示器中间而老是出在显示器左上角,我不知道怎么调整,可定有办法把它显示在中间,有人知道解决的技巧,请教一下,我对他必有回报,我自己知道的一些会献给他!。