B14041125_6(32页).doc

上传人:1595****071 文档编号:34791561 上传时间:2022-08-18 格式:DOC 页数:32 大小:328KB
返回 下载 相关 举报
B14041125_6(32页).doc_第1页
第1页 / 共32页
B14041125_6(32页).doc_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《B14041125_6(32页).doc》由会员分享,可在线阅读,更多相关《B14041125_6(32页).doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-实 验 报 告(2014 / 2015 学年 第 一 学期)课程名称Windows高级软件开发实验名称文本信息与可视化信息的转换实验时间2015年11月27日指导单位南京邮电大学指导教师学生姓名班级学号学院(系)计算机学院、软件学院专 业软件工程(NIIT)第 - 31 - 页-实 验 报 告实验名称基于Windows的绘图指导教师张卫丰、王子元实验类型实验学时实验时间一、 实验目的和要求目的:学习Windows GUI的操作要求: 主窗口(或对话框)分上下(或左右)两部分,分别显示可视化信息与文本信息,并实现两者间的相互转换。可视化信息为复选框组成的矩阵,通过菜单中的“增加行”、“增加列”

2、、“删除行”、“删除列”菜单项修改矩阵的行列数量。文本信息为编辑框,显示所有被选中复选框的坐标。通过修改编辑框中的信息,也可对复选框矩阵的选中状态进行修改。二、实验环境(实验设备)Visual studio二、 实验原理及内容*Dlg.h头文件添加下列函数和变量protected:HICON m_hIcon;CButton m_button3;CButton m_button1;CButton m_button2;CButton checkbox17 * 17;CEdit *pCDe ;/ 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void On

3、SysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:afx_msg void On32771();void OnCreateRow();void OnDeleteRow();void OnCreateCol();void OnDeleteCol();/int OnCreate(LPCREATESTRUCT lpCreateStruct);afx_msg void On32773();afx_msg void

4、 Onm_button3();afx_msg void Onm_button1();afx_msg void Onm_button2();/afx_msg void OnClickedButton3();afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);afx_msg void OnSexClick(UINT uID);afx_msg void On32772();afx_msg void On32774();*dlg.cpp代码如下#include stdafx.h#include win32课时作业.h#include win32课时作

5、业Dlg.h#include afxdialogex.h#ifdef _DEBUG#define new DEBUG_NEW#endifconst int height = 20;/每个复选框的高const int length = 15;/每个复选框的长int row = 15; /初始行数int col = 15; /初始列数int k = 0; /已选中的复选框个数int ID = 100;int ButtonID3030 = 0 ; /30行30列的矩阵/ 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogExpub

6、lic:CAboutDlg();/ 对话框数据#ifdef AFX_DESIGN_TIMEenum IDD = IDD_ABOUTBOX ;#endifprotected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持/ 实现protected:DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialogEx(IDD_ABOUTBOX)void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialogEx:DoDataExcha

7、nge(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()/ Cwin32课时作业Dlg 对话框Cwin32课时作业Dlg:Cwin32课时作业Dlg(CWnd* pParent /*=NULL*/): CDialogEx(IDD_WIN32_DIALOG, pParent)m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void Cwin32课时作业Dlg:DoDataExchange(CDataExchange* pDX)CDialogEx:DoDataExchange(pD

8、X);BEGIN_MESSAGE_MAP(Cwin32课时作业Dlg, CDialogEx) /添加消息事件ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_COMMAND(ID_32771, &Cwin32课时作业Dlg:On32771)ON_COMMAND(10001, &Cwin32课时作业Dlg:Onm_button3)ON_COMMAND(10002, &Cwin32课时作业Dlg:Onm_button1)ON_COMMAND(10003, &Cwin32课时作业Dlg:Onm_button2)ON_COMMAND(ID_3

9、2773, &Cwin32课时作业Dlg:On32773)ON_COMMAND_RANGE(99,9999, OnSexClick)/ON_BN_CLICKED(IDC_BUTTON3, &Cwin32课时作业Dlg:OnClickedButton3)ON_WM_CREATE()ON_COMMAND(ID_32772, &Cwin32课时作业Dlg:On32772)ON_COMMAND(ID_32774, &Cwin32课时作业Dlg:On32774)END_MESSAGE_MAP()/ Cwin32课时作业Dlg 消息处理程序BOOL Cwin32课时作业Dlg:OnInitDialog()

10、CDialogEx:OnInitDialog();/ 将“关于.”菜单项添加到系统菜单中。/ IDM_ABOUTBOX 必须在系统命令范围内。ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX LoadMenu(MAKEINTRESOURCE(IDR_MENU1);this-SetMenu(m_Menu);/OnCreate(lpCreateStruct);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)BOOL bNameValid;CStr

11、ing strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()pSysMenu-AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动/ 执行此操作SetIcon(m_hIcon, TRUE);/ 设置大图标SetIcon(m_hIcon, FALSE)

12、;/ 设置小图标/ TODO: 在此添加额外的初始化代码return TRUE; / 除非将焦点设置到控件,否则返回 TRUEvoid Cwin32课时作业Dlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialogEx:OnSysCommand(nID, lParam);/ 如果向对话框添加最小化按钮,则需要下面的代码/ 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,/ 这将由框架自动完成。vo

13、id Cwin32课时作业Dlg:OnPaint()if (IsIconic()CPaintDC dc(this); / 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon +

14、1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ 绘制图标dc.DrawIcon(x, y, m_hIcon);elseCDialogEx:OnPaint();/当用户拖动最小化窗口时系统调用此函数取得光标/显示。HCURSOR Cwin32课时作业Dlg:OnQueryDragIcon()return static_cast(m_hIcon);void Cwin32课时作业Dlg:On32771() /菜单发生事件/ TODO: 在此添加命令处理程序代码OnCreateRow(); /添加行void Cwin32课时作业Dlg:OnCreat

15、eRow() /增加行int topy = row*height; /左上角的y坐标int righty = (row + 1)*height; /右下角的y坐标if (!col&!row) /设置第一个复选框的位置CButton * Button = new CButton;Button-Create(_T(复选框), WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX, CRect(0, 0, 15, 20), this, ID);ButtonID00 = ID; /Button数组存放控件IDID+;row+;col+;return;if (row = 17)

16、 /设置最大行数MessageBox(L矩阵不能超过17行);/MessageBox(NULL,L矩阵不能超过17行,L标题, MB_OK | MB_ICONWARNING);return;for (int i = 0; iCreate(L复选框, WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX, CRect(i*length, topy, (i + 1)*length, righty), this, ID);ButtonIDrowi = ID;ID+;row+;void Cwin32课时作业Dlg:OnCreateCol() /增加列int topy = co

17、l*length; /左上角的y坐标int righty = (col + 1)*length; /右下角的y坐标if (!col&!row) /设置第一个复选框的位置CButton * Button = new CButton;Button-Create(_T(复选框), WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX, CRect(0, 0, 15, 20), this, ID);ButtonID00 = ID; /Button数组存放控件IDID+;row+;col+;return;if (col = 17) /设置最大行数MessageBox(L矩阵不能

18、超过17列);/MessageBox(NULL,L矩阵不能超过17行,L标题, MB_OK | MB_ICONWARNING);return;for (int i = 0; iCreate(L复选框, WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX, CRect(topy, i*height, righty, (i + 1)*height), this, ID);ButtonIDicol = ID;ID+;col+;void Cwin32课时作业Dlg:OnDeleteCol() /删除列CButton * Button;for (int i = 0; iSho

19、wWindow(SW_HIDE); /隐藏ButtonIDicol-1 = 0;col-;if (!col) /当列数为0,将行数也置为0row = 0;void Cwin32课时作业Dlg:OnDeleteRow() /删除行CButton * Button;for (int i = 0; iShowWindow(SW_HIDE); /隐藏ButtonIDrow - 1i = 0;row-;if (!row) /当行数为0,将列数也置为0col = 0;void Cwin32课时作业Dlg:On32773()/ TODO: 在此添加命令处理程序代码OnDeleteRow();void Cwi

20、n32课时作业Dlg:Onm_button3() /显示按钮添加事件UpdateData(0);CString col_cs;CString row_cs;CString edit = L;for (int m = 100; m ID; m+)CButton* pBtn = (CButton*)GetDlgItem(m);for (int i=0; i col; i+)for (int j=0; j GetCheck()edit += L(;col_cs.Format(_T(%d), i+1);row_cs.Format(_T(%d), j+1);edit += row_cs;edit +=

21、L,;edit += col_cs;edit += L);edit += rn;SetDlgItemText(10000, edit);UpdateData(0);void Cwin32课时作业Dlg:Onm_button1() /更变按钮添加事件int button60 = 0 ;CString str;(CEdit *)GetDlgItem(10000)-GetWindowText(str);int nLen = str.GetLength();int j = 0;for (int i = 0; i= 0 & str.GetAt(i) = 0& str.GetAt(i + 1) = 9)b

22、uttonj = (int)str.GetAt(i) - 48)*10+ (int)str.GetAt(i+1) - 48);j+;else buttonj = (int)str.GetAt(i) - 48;j+;Onm_button2();for (int k = 0; k SetCheck(1);Onm_button3();/MessageBox(button);void Cwin32课时作业Dlg:Onm_button2() /清除按钮添加事件for (int i = 100; i GetCheck()pBtn-SetCheck(0);SetDlgItemText(10000, L);U

23、pdateData(0);int Cwin32课时作业Dlg:OnCreate(LPCREATESTRUCT lpCreateStruct) /创建初始化矩阵,按钮if (CDialogEx:OnCreate(lpCreateStruct) = -1)return -1;/ TODO: 在此添加您专用的创建代码pCDe = new CEdit;pCDe-Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_BORDER, CRect(350, 0, 550, 300), this, 10000);pCDe-ShowWindo

24、w(SW_SHOWNORMAL);/按钮初始化CRect rect_button(300, 10, 340, 60); /控制按钮大小、位置m_button3.Create(_T(显示), WS_CHILD | WS_VISIBLE | WS_BORDER, rect_button, this, 10001);/按钮“显示”m_button3.ShowWindow(SW_SHOWNORMAL);CRect rect_button1(300, 100, 340, 150); /控制按钮大小、位置m_button1.Create(_T(更变), WS_CHILD | WS_VISIBLE | WS

25、_BORDER, rect_button1, this, 10002);/按钮“更变”m_button1.ShowWindow(SW_SHOWNORMAL);CRect rect_button2(300, 200, 340, 250); /控制按钮大小、位置m_button2.Create(_T(清空), WS_CHILD | WS_VISIBLE | WS_BORDER, rect_button2, this, 10003);/按钮“清空”m_button2.ShowWindow(SW_SHOWNORMAL);/初始化复选框for (int i = 0; i15; i+)for (int j

26、 = 0; j15; j+)checkboxi * 15 + j.Create(L复选框, WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX, CRect(j*length, i*height, (j + 1)*length, (i + 1)*height), this, ID);ButtonIDij = ID; /存放IDID+;return 0;void Cwin32课时作业Dlg:OnSexClick(UINT uID) /空函数,可以用来建立路由事件void Cwin32课时作业Dlg:On32772() /菜单添加列/ TODO: 在此添加命令处理程序代码OnCreateCol();void Cwin32课时作业Dlg:On32774() /菜单删除列/ TODO: 在此添加命令处理程序代码OnDeleteCol();运行结果:添加删除行列显示按钮更变按钮清空按钮实 验 报 告四、实验小结(包括问题和解决方法、心得体会、意见与建议等) 很难做。 五、指导教师评语 成 绩批阅人日 期

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁