版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VC控件学习总结2010年8月14日22:12:16目录3 、在编辑框中输入字符并显示光标8 、对话框获取当前时间1、鼠标响应创建一个基于单个对话框的程序,ctrl+W,直接添加WM_LBUTTONDOWN,添加代码如下:void CMyDlg:OnLButtonDown(UINT nFlags, CPoint point)/ TODO: Add your message handler code here and/or call defaultAfxMessageBox("用户按下了鼠标左键键!");CDialog:OnLButtonDown(nFlags, point)
2、;AfxMessageBox是弹出一个消息(警告类)。 返回目录2、键盘检测首先创建一个基于单文本的程序,在VIEW的头文件中添加入两个变量。如下 BOOL b_Ctrldown,b_F8down;/PUBLIC类型然后在键盘检测View.cpp初始化这两个变量。如下:CMyView:CMyView()/ TODO: add construction code hereb_Ctrldown=false;/初始化b_F8down=false;/初始化随后添加按键按下程序和按键松开程序,代码如下:void CMyView:OnKeyDown(UINT nChar, UINT nRepCnt, UI
3、NT nFlags) / TODO: Add your message handler code here and/or call defaultif(nChar=VK_CONTROL)/如果按下了“Ctrl”键b_Ctrldown=true;if(nChar=VK_F8)/如果按下了“F8”键b_F8down=true;if(b_Ctrldown&&b_F8down)/同时按下了“Ctrl”键和“F8”键b_Ctrldown=false;b_F8down=false;AfxMessageBox("同时按下了Ctrl键和F8键");/弹出提示框 CView:
4、OnKeyDown(nChar, nRepCnt, nFlags);void CMyView:OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)/ TODO: Add your message handler code here and/or call defaultif(nChar=VK_CONTROL)/如果释放了“Ctrl”键b_Ctrldown=false;if(nChar=VK_F8)/如果释放了“F8”键b_F8down=false;CView:OnKeyUp(nChar, nRepCnt, nFlags);然后就可以编译运行这个程序了,当
5、我们按下CTRL和F8,会弹出消息框。 返回目录3、在编辑框中输入字符并显示光标我们创建一个基于单文本的文档,在View.h文件中新建一个public变量,如下: CPoint ptCharacter;/字符位置这个变量用于表示我们光标的位置或者说是我们输到那了的标志。再在View.cpp的文件中添加响应函数。ctrl+W打开类向导,我们添加onchar 函数。代码如下:void CCh5Demo3View:OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)/ TODO: Add your message handler code here and/or
6、 call defaultif(nChar=13)/按下了回车键/换行ptCharacter.x=0;ptCharacter.y=ptCharacter.y+25;SetCaretPos (ptCharacter); /将插入符移到键入点 ShowCaret (); /显示插入符elseCClientDC dc(this);HideCaret (); /隐藏插入符dc.TextOut(ptCharacter.x,ptCharacter.y,(LPCTSTR)&nChar);/显示字符 CSize textsize;textsize=dc.GetTextExtent(LPCTSTR)&a
7、mp;nChar); /获取当前字符大小/前进到下一个字符位置ptCharacter.x=ptCharacter.x+textsize.cx;SetCaretPos (ptCharacter); /将插入符移到键入点ShowCaret (); /显示插入符CView:OnChar(nChar, nRepCnt, nFlags);这个函数就是这样了,我们编译之后,可以对键盘解码并显示在文本编辑框上,但是依然没有光标的出现。虽然有Caret的相关函数,但是我们还没有创建它,下面我们打开类向导,添加函数OnSetFocus和OnKillFocus。代码如下:void CCh5Demo3View:On
8、SetFocus(CWnd* pOldWnd)CView:OnSetFocus(pOldWnd);/ TODO: Add your message handler code hereCreateSolidCaret(4, 20); /创建插入符SetCaretPos (ptCharacter); /将插入符移到鼠标点 ShowCaret (); /显示插入符void CCh5Demo3View:OnKillFocus(CWnd* pNewWnd)CView:OnKillFocus(pNewWnd);/ TODO: Add your message handler code herHideCar
9、et (); /隐藏插入符 返回目录4、鼠标光标范围控制新建一个基于对话框的文档,添加鼠标左键响应函数,添加如下代码:void CMyDlg:OnLButtonDown(UINT nFlags, CPoint point)/ TODO: Add your message handler code here and/or call defaultCRect rect1;GetWindowRect(&rect1); /获取客户区窗口区域ClipCursor(&rect1); /将鼠标的移动限制的客户区CDialog:OnLButtonDown(nFlags, point); 返回目
10、录5、按键响应弹出对话框DIALOG创建一个基于对话框的文档。在对话框上面添加一个按钮Button1。同时在资源中添加一个对话框,资源的ID为IDD_DIALOG1。双击按钮Button1,添加响应函数:void CMyDlg:OnButton1()/ TODO: Add your control notification handler code hereCDialog dlg(IDD_DIALOG1); /创建一个Dialogdlg.DoModal(); / 返回目录6、先修改才可以后确定的应用创建一个基于对话框的程序,在对话框上添加两个文本编辑框,ID为IDC_EDIT1和IDC_EDI
11、T2。打开类向导选择Member Variables项,分别给IDC_EDIT1和IDC_EDIT2添加CString类的成员变量m_Username和m_Number。然后在在对话框上添加一个按钮,命名为“提交”,双击该按钮添加响应函数OnButton1()。我们的目的是当我们按下按钮后,编辑框2和按钮将不能够再次使用,并且只有在编辑框1更新后才可以再次使用,这就使用到了IDC_EDIT1的Change响应函数,在类向导中Object IDs中选择IDC_EDIT1中的EN_CHANGE。代码如下:void CMyDlg:OnButton1()/ TODO: Add your control
12、 notification handler code hereUpdateData(TRUE); /获取编辑控件的值if(m_Username.IsEmpty()|(m_Number.IsEmpty() /姓名、学号是否为空 AfxMessageBox("姓名、学号不能为空!");return;CString str;str="姓名:"+m_Username+" 学号:"+m_Number+"rn"GetDlgItem(IDC_EDIT2)->EnableWindow(FALSE); /学号编辑框无效GetD
13、lgItem(IDC_BUTTON1)->EnableWindow(FALSE); /提交按钮无效AfxMessageBox(str); /弹出消息,显示字符串void CMyDlg:OnChangeEdit1()/ TODO: Add your control notification handler code hereGetDlgItem(IDC_EDIT2)->EnableWindow(TRUE); /学号编辑框生效GetDlgItem(IDC_EDIT2)->SetWindowText(""); /清空学号编辑框GetDlgItem(IDC_BUT
14、TON1)->EnableWindow(TRUE); /提交按钮生效返回目录7、单选的操作创建一个对话框,添加一个组框,在组框中添加两个单选按钮IDC_RADIO1和IDC_RADIO2。文本为51单片机和AVR单片机。其中一个的属性一定要选上“组”属性。编译执行以下看看是否可以实现单选。打开类向导为IDC_RADIO1(选为“组”属性)的那个添加一个变量m_radio。在函数初始化中添加m_radio=0;然后使用类向导分别添加单选按钮的响应函数。如下:void CMyDlg:OnRadio1()/ TODO: Add your control notification handler
15、 code herem_radio=1;void CMyDlg:OnRadio2()/ TODO: Add your control notification handler code herem_radio=2;然后我们在添加一个按钮,命名为选择。添加响应函数如下来反映我们选择是否成功。代码如下:void CMyDlg:OnButton1()/ TODO: Add your control notification handler code hereif(m_radio=0)AfxMessageBox("请选择单片机类型!");else if(m_radio=1)AfxM
16、essageBox("你选择的是51单片机!");else if(m_radio=2)AfxMessageBox("你选择的是AVR单片机!"); 返回目录8、对话框获取当前时间创建一个对话框,添加一个按钮,文本为时间。双击按钮,添加如下代码: void CMyDlg:OnButton1()/ TODO: Add your control notification handler code heret1=CTime:GetCurrentTime(); /获取当前系统时间 strk=t1.Format("%H")+":&quo
17、t;+t1.Format("%M")+":"+t1.Format("%S");strkmin=t1.Format("%M");/开始分钟数strksec=t1.Format("%S");/开始的秒数strk="开始时间"+strk;AfxMessageBox(strk);返回目录9、文本编辑器的格式化输出创建一个文本编辑器,添加入如下的代码就可以显示不同的文字输出。void CCh9Demo2View:OnDraw(CDC* pDC)CCh9Demo2Doc* pDoc =
18、GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data hereCString str="下面的文本显示为采用DrawText函数进行格式化输出:"pDC->TextOut(10,10,str);/单行输出文本CRect rect;GetClientRect(&rect);/获取客户区窗口矩形CRect textrect(40,50,(rect.Width()-30),rect.Height();/文本输出矩形区域pDC->SetTextColor(RGB(220,10
19、,10);/文本颜色pDC->SetBkMode(TRANSPARENT);/文本采用透明背景色CString str2="输出文本一般使用CDC:TextOut函数,它可以输出单行的文本。另外,在CDC类中还有一个在指定的矩形范围内,显示格式化文本的函数CDC:DrawText。在输出文字时,可以使用CDC提供的一些函数进行文本颜色、背景颜色的设置等等。"/文本pDC->DrawText(str2,&textrect,DT_LEFT|DT_WORDBREAK);/格式化文本输出,左对齐,不截断单词 返回目录10、使用画笔工具在文本编辑框中画图形创建一个
20、文本编辑框,添加入如下的代码即可:void CCh9Demo3View:OnDraw(CDC* pDC)CCh9Demo3Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data hereCPen pen5;/创建实线画笔pen0.CreatePen(PS_SOLID, 5, RGB(255, 0, 0);/创建虚线画笔 pen1.CreatePen(PS_DASH, 1, RGB(0, 255, 0); /创建点线画笔 pen2.CreatePen(PS_DOT, 1, RGB(0,
21、0, 255); /创建点划线画笔 pen3.CreatePen(PS_DASHDOT, 1, RGB(0, 255, 255); / 创建双点划线画笔 pen4.CreatePen(PS_DASHDOTDOT, 1, RGB(255, 0, 255); / 保存指向设备上下文原有画笔的指针 CPen *pOldPen; /以实线画笔绘制矩形 pOldPen=pDC->SelectObject(&pen0); pDC->Rectangle(10, 10, 110, 110); pDC->TextOut(10, 115, "Rectangle绘制矩形"
22、;); /使用虚线画笔和函数Polyline输出多段折线 pDC->SelectObject(&pen1);/载入画笔 pDC->Rectangle(180, 10, 330, 110);/绘制矩形 CPoint pts=CPoint(190, 20), CPoint(200, 60), CPoint(270, 40), CPoint(210, 80), CPoint(250, 100), CPoint(300, 30), CPoint(310, 80); pDC->Polyline(pts, 7);/绘制多端折线 pDC->TextOut(180, 115,
23、"Polyline绘制多段折线"); / 使用Pie和Arc输出饼图和弧形 pDC->SelectObject(&pen2);/载入点线画笔 pDC->Ellipse(10, 140, 160, 240); pDC->SelectObject(&pen3);/载入点划线画笔 pDC->Pie(20, 150, 150, 230, 160, 160, 10, 160); pDC->SelectObject(&pen4);/载入双点划线画笔 pDC->Arc(20, 150, 150, 230, 10, 220, 16
24、0, 220); pDC->TextOut(10, 245, "不同画笔绘制椭圆、弧形和饼图"); /恢复设备上下文的原有画笔 pDC->SelectObject(pOldPen); /删除所创建的画笔资源 for (int i=0; i<5; i+) peni.DeleteObject();返回目录11、画刷在文本编辑框的使用创建一个文本编辑框,添加入如下的代码实现下图的效果。void CCh9Demo4View:OnDraw(CDC* pDC)CCh9Demo4Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);/
25、 TODO: add draw code for native data here CBrush brush7, *pOldBrush; / 创建一个原色刷子 brush0.CreateSolidBrush(RGB(128, 0, 128); / 创建一个具有样式 HS_BDIAGONAL 的刷子 brush1.CreateHatchBrush(HS_BDIAGONAL, RGB(128, 0, 0); / 创建一个具有样式 HS_CROSS 的刷子 brush2.CreateHatchBrush(HS_CROSS, RGB(0, 0, 128); /创建一个具有样式 HS_DIAGCROSS
26、 的刷子 brush3.CreateHatchBrush(HS_DIAGCROSS, RGB(0, 128, 0); /创建一个具有样式 HS_FDIAGONAL 的刷子 brush4.CreateHatchBrush(HS_FDIAGONAL, RGB(128, 128, 0 ); / 创建一个具有样式 HS_VERTICAL 的刷子 brush5.CreateHatchBrush(HS_VERTICAL, RGB(0, 128, 128); / 创建一个使用位图图案的刷子 /CBitmap bitmap; /bitmap.LoadBitmap(IDB_BITMAP1); /brush6.C
27、reatePatternBrush(&bitmap); pOldBrush=pDC->SelectObject(&brush0);/载入刷子1 pDC->Rectangle(10, 10, 160, 110); pDC->TextOut(10, 115, "单一颜色刷子"); pDC->SelectObject(&brush1);/载入刷子2 pDC->Rectangle(180, 10, 330, 110); pDC->TextOut(180, 115, "HS_BDIAGONAL样式刷子")
28、; pDC->SelectObject(&brush2);/载入刷子3 pDC->Rectangle(350, 10, 500, 110); pDC->TextOut(350, 115, "HS_CROSS样式刷子"); pDC->SelectObject(&brush3);/载入刷子4 pDC->Rectangle(520, 10, 670, 110); pDC->TextOut(520, 115, "HS_DIAGCROSS样式刷子"); pDC->SelectObject(&brush4);/载入刷子5 pDC->Rectangle(10, 140, 160, 240); pDC->TextOut(10, 245, "HS_FDIAGONAL样式刷子"); pDC->SelectObject(&brush5);/载入刷子6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年上海市青浦区教育系统公开招聘高端教育人才(管理方向)备考笔试题库及答案解析
- 2025四川爱创科技有限公司安徽分公司招聘客户经理岗位1人笔试重点题库及答案解析
- 2025临沧市临翔区自然资源局面向社会公开招聘编外工作人员(2人)笔试重点试题及答案解析
- 2025年宁波市北仑区交通投资集团有限公司公开招聘注册安全工程师(矿山专业)备考题库完整参考答案详解
- 2025年自贡市自流井区人力资源和社会保障局自流井区事业单位公开选调工作人员的备考题库及一套答案详解
- 宜宾市科技人才集团有限公司2025年第三批员工公开招聘的备考题库及一套完整答案详解
- 浏阳市人民医院2025年公开招聘编外合同制人员备考题库及一套完整答案详解
- 2026河北沧州市教育局市直4所学校高层次人才选聘21人模拟笔试试题及答案解析
- 2026河北张家口经开区编办青年就业见习岗位招聘5人考试重点试题及答案解析
- 成都市新都区2025年12月公开招聘街道社区消防站消防员的备考题库及一套答案详解
- 剧组用车合同范本
- 2024年法律职业资格《客观题卷一》试题及答案
- 钢铁厂劳务合同范本
- 2025年沈阳华晨专用车有限公司公开招聘笔试考试备考题库及答案解析
- 职业技能竞赛和技术比武活动方案
- 2025课堂惩罚 主题班会:马达加斯加企鹅课堂惩罚 课件
- 本科《行政领导学》期末纸质考试总题库2025版
- GB/T 4457.2-2003技术制图图样画法指引线和基准线的基本规定
- GB/T 39433-2020气弹簧设计计算
- GB/T 28756-2012缆索起重机
- 新人教版八年级美术下册教案《情感的抒发与理念的表达》教学设计
评论
0/150
提交评论