vc对话框绘制会变色的椭圆_第1页
vc对话框绘制会变色的椭圆_第2页
vc对话框绘制会变色的椭圆_第3页
vc对话框绘制会变色的椭圆_第4页
vc对话框绘制会变色的椭圆_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、vc对话框绘制会变色的椭圆 / zz24Dlg.cpp : implementation file/#include "stdafx.h"#include "zz24.h"#include "zz24Dlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg

2、: public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CA

3、boutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ N

4、o message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CZz24Dlg dialogCZz24Dlg:CZz24Dlg(CWnd* pParent /*=NULL*/): CDialog(CZz24Dlg:IDD, pParent)/AFX_DATA_INIT(CZz24Dlg)/ NOTE: the ClassWizard will add member initialization here/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in

5、 Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CZz24Dlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CZz24Dlg)DDX_Control(pDX, IDC_EDIT3, m_edit3);DDX_Control(pDX, IDC_EDIT2, m_edit2);DDX_Control(pDX, IDC_EDIT1, m_edit1);DDX_Control(pDX, IDC_SCROLLBAR

6、3, m_scr3);DDX_Control(pDX, IDC_SCROLLBAR2, m_scr2);DDX_Control(pDX, IDC_SCROLLBAR1, m_scr1);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CZz24Dlg, CDialog)/AFX_MSG_MAP(CZz24Dlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_HSCROLL()/AFX_MSG_MAPEND_MESSAGE_MAP()/ CZz24Dlg message handlersBOOL CZz24Dlg

7、:OnInitDialog()CDialog:OnInitDialog();/ Add "About." menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CS

8、tring strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the application's main

9、window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_ hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization here/* m_scr1.SetScrollRange(0,255);m_scr1.SetScrollPos(50);/char sPos110;/itoa(m_Scrollbar1.GetScrollPos(),sPos1,10);/m_Edit1.SetSel(0,-1);/ m_Edit1.ReplaceSel(sPos1)

10、;m_edit1=m_scr1.GetScrollPos();UpdateData(FALSE);*/m_scr1.SetScrollRange(0,255);m_scr1.SetScrollPos(50);char sPos110;itoa(m_scr1.GetScrollPos(),sPos1,10);m_edit1.SetSel(0,-1);m_edit1.ReplaceSel(sPos1);UpdateData(FALSE);m_scr2.SetScrollRange(0,255);m_scr2.SetScrollPos(50);char sPos210;itoa(m_scr2.Get

11、ScrollPos(),sPos2,10);m_edit2.SetSel(0,-1);m_edit2.ReplaceSel(sPos2);UpdateData(FALSE);m_scr3.SetScrollRange(0,255);m_scr3.SetScrollPos(50);char sPos310;itoa(m_scr3.GetScrollPos(),sPos3,10);m_edit3.SetSel(0,-1);m_edit3.ReplaceSel(sPos3);UpdateData(FALSE);return TRUE; / return TRUE unless you set the

12、 focus to a controlvoid CZz24Dlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applicatio

13、ns using the document/view model,/ this is automatically done for you by the framework./*在运行窗口时,系统画出我们的对话框时用下面的函数画的!开始不懂为什么将画图的代码写在初始化函数中就不会一运行就画出突来,而那些控件却可以画出来,原因是,那些控件是我们自己班上去的,而圆却是函数要画的,系统画东西就是在ONPAINT函数中*/void CZz24Dlg:OnPaint() / if (IsIconic()CPaintDC dc(this); / device context for paintingSen

14、dMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw

15、the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/HDC hdc; /PAINTSTRUCT ps; /HPEN hP; /HBRUSH hB; / /hdc=BeginPaint(&ps); /SetMapMode(hdc,MM_TEXT); / hP=CreatePen(PS_DASHDOT,1,RGB(255,255,0);/hdc=:GetDC(m_hWnd); /Ellipse(hdc,200,200,270,250); /HDC hdc; /设备环境句柄HPEN hP; /HBRUSH hB; / S

16、etMapMode(hdc,MM_TEXT); /设置映射模式hB=CreateHatchBrush(7,RGB(50,50,50);hdc=:GetDC(m_hWnd); /SelectObject(hdc,hB);Ellipse(hdc,150,160,350,280); DeleteObject(hP);DeleteObject(hB);/ The system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CZz24Dlg:OnQueryDrag

17、Icon()return (HCURSOR) m_hIcon;void CZz24Dlg:OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) / TODO: Add your message handler code here and/or call defaultCDialog:OnHScroll(nSBCode, nPos, pScrollBar);char sPos110,sPos210,sPos310;int iNowPos1,iNowPos2,iNowPos3;/CScrollBar *m_Scrollbar=new

18、CScrollBar;/对象与对象之间的赋值操作都不可以啊!/CEdit *m_Edit=new CEdit;if(pScrollBar=&m_scr1)switch(nSBCode)/if(pScrollBar=&m_Scrollbar1)/ m_Scrollbar=&m_Scrollbar1;/ m_Edit=&m_Edit1; /这个IF语句是用来在多个滚动条情况下进行判断,/看操作的是哪个控件case SB_THUMBTRACK: /拖动滚动条时m_scr1.SetScrollPos(nPos);itoa(nPos,sPo

19、s1,10);m_edit1.SetSel(0,-1);m_edit1.ReplaceSel(sPos1);/m_edit1=m_scr1.GetScrollPos();/UpdateData(FALSE);break;case SB_LINEDOWN: /单击滚动条向下的箭头iNowPos1=m_scr1.GetScrollPos();/获取滚动块目前的位置并赋值给变量iNowPosiNowPos1=iNowPos1+1; /变量在当前的值上自动加一,以实现单击一下向下的箭头,滚动块就会下移一个位置if(iNowPos1>255)iNowPos1=255; /判断滚动块是否到底

20、了m_scr1.SetScrollPos(iNowPos1); /设置滚动块的位置,此步完成之后滚动快就已经到了相应的位置itoa(m_scr1.GetScrollPos(),sPos1,10);/得到滚动块的位置(整型),并将此十进制数转化成字符m_edit1.SetSel(0,-1); /选中显示框中的所有内容m_edit1.ReplaceSel(sPos1); /用sPos替换显示框中的所有内容/m_edit1=m_scr1.GetScrollPos();/UpdateData(FALSE);break;case SB_LINEUP: /单击滚动条向上的箭头iNowPos1=m_scr1

21、.GetScrollPos();/获取滚动块目前的位置并赋值给变量iNowPosiNowPos1=iNowPos1-1; /变量在当前的值上自动加一,以实现单击一下向下的箭头,滚动块就会下移一个位置if(iNowPos1<0)iNowPos1=0; /判断滚动块是否到底了m_scr1.SetScrollPo s(iNowPos1); /设置滚动块的位置,此步完成之后滚动快就已经到了相应的位置itoa(m_scr1.GetScrollPos(),sPos1,10);/得到滚动块的位置(整型),并将此十进制数转化成字符m_edit1.SetSel(0,-1); /选中显示框中的所有内

22、容m_edit1.ReplaceSel(sPos1); /用sPos替换显示框中的所有内容/m_edit1=m_scr1.GetScrollPos();/UpdateData(FALSE);break;/通过这个我们知道给EDIT(编辑框)进行赋if(pScrollBar=&m_scr2)switch(nSBCode)/if(pScrollBar=&m_Scrollbar3)/这个IF语句是用来在多个滚动条情况下进行判断,/看操作的是哪个控件case SB_THUMBTRACK: /拖动滚动条时m_scr2.SetScrollPos(nPos);itoa(nPo

23、s,sPos2,10);m_edit2.SetSel(0,-1);m_edit2.ReplaceSel(sPos2);break;case SB_LINEDOWN: /单击滚动条向下的箭头iNowPos2=m_scr2.GetScrollPos();/获取滚动块目前的位置并赋值给变量iNowPosiNowPos2=iNowPos2+1; /变量在当前的值上自动加一,以实现单击一下向下的箭头,滚动块就会下移一个位置if(iNowPos2>255)iNowPos2=255; /判断滚动块是否到底了m_scr2.SetScrollPos(iNowPos2); /设置滚动块的位置,此步完

24、成之后滚动快就已经到了相应的位置itoa(m_scr2.GetScrollPos(),sPos2,10);/得到滚动块的位置(整型),并将此十进制数转化成字符m_edit2.SetSel(0,-1); /选中显示框中的所有内容m_edit2.ReplaceSel(sPos2); /用sPos替换显示框中的所有内容break;case SB_LINEUP: /单击滚动条向上的箭头iNowPos2=m_scr2.GetScrollPos();/获取滚动块目前的位置并赋值给变量iNowPosiNowPos2=iNowPos2-1; /变量在当前的值上自动加一,以实现单击一下向下的箭头,滚动块就会下移

25、一个位置if(iNowPos2<0)iNowPos2=0; /判断滚动块是否到底了m_scr2.SetScrollPos(iNowPos2); /设置滚动块的位置,此步完成之后滚动快就已经到了相应的位置itoa(m_scr2.GetScrollPos(),sPos2,10);/得到滚动块的位置(整型),并将此十进制数转化成字符m_edit2.SetSel(0,-1); /选中显示框中的所有内容m_edit2.ReplaceSel(sPos2); /用sPos替换显示框中的所有内容break;if(pScrollBar=&m_scr3 )switch(nSBCode

26、)/if(pScrollBar=&m_Scrollbar1)/ m_Scrollbar=&m_Scrollbar1;/ m_Edit=&m_Edit1; /这个IF语句是用来在多个滚动条情况下进行判断,/看操作的是哪个控件case SB_THUMBTRACK: /拖动滚动条时m_scr3.SetScrollPos(nPos);itoa(nPos,sPos3,10);m_edit3.SetSel(0,-1);m_edit3.ReplaceSel(sPos3);/m_edit3=m_scr3.GetScrollPos();/UpdateData(FA

27、LSE);break;case SB_LINEDOWN: /单击滚动条向下的箭头iNowPos3=m_scr3.GetScrollPos();/获取滚动块目前的位置并赋值给变量iNowPosiNowPos3=iNowPos3+1; /变量在当前的值上自动加一,以实现单击一下向下的箭头,滚动块就会下移一个位置if(iNowPos3>255)iNowPos3=255; /判断滚动块是否到底了m_scr3.SetScrollPos(iNowPos3); /设置滚动块的位置,此步完成之后滚动快就已经到了相应的位置itoa(m_scr3.GetScrollPos(),sPos3,10);/

28、得到滚动块的位置(整型),并将此十进制数转化成字符m_edit3.SetSel(0,-1); /选中显示框中的所有内容m_edit3.ReplaceSel(sPos3); /用sPos替换显示框中的所有内容/m_edit3=m_scr3.GetScrollPos();/UpdateData(FALSE);break;case SB_LINEUP: /单击滚动条向上的箭头iNowPos3=m_scr3.GetScrollPos();/获取滚动块目前的位置并赋值给变量iNowPosiNowPos3=iNowPos3-1; /变量在当前的值上自动加一,以实现单击一下向下的箭头,滚动块就会下移一个位置if(iNowPos3<0)iNowPos3=0; /判断滚动块是否到底了m_scr3.SetScrollPos(iNowPos3); /设置滚动块的位置,此步完成之后滚动快就已经到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论