1、 3 设计步骤1)至3)学生成绩操作1.启动Visual C+ 6.02.创建一个工程名为Login的基于对话框应用程序3.按照设计要求在登陆对话框上添加控件并设置好各自的属性4.为IDD_LOGIN_DIALOG创建对话框类CLoginDlg5.为CLoginDlg类中的IDC_EDIT1和IDC_EDIT2添加成员变量m_name和m_number6.为CLoginDlg类中的IDOK和IDCANCEL添加BN_CLICKED的消息映射,并添加下列代码: void CLoginDlg:OnOK() UpdateData(TRUE);if(m_name=LiMing&m_password=8
2、86688)CScoreDlg dlg;dlg.DoModal();else MessageBox(没有此用户名或密码错误!,提示);CDialog:OnOK();void CLoginDlg:OnCancel() m_name=;m_password=UpdateData(FALSE);7.添加一学生成绩输入的对话框,按照设计要求添加控件并设置好各自的属性8.为IDD_DIALOG1创建对话框类CInputDlg9.为CInputDlg类中的IDC_EDIT1、IDC_EDIT2、IDC_EDIT3、IDC_EDIT4、IDC_EDIT5、IDC_SPIN1、IDC_SPIN2、IDC_SP
3、IN3依次添加成员变量m_name、m_number、m_score1、m_score2、m_score3、m_spin1、m_spin2、m_spin310.为CInputDlg添加WM_INITDIALOG的消息映射,并添加下列代码: BOOL CInputDlg:OnInitDialog() OnInitDialog();m_spin1.SetRange( 0, 100 );m_spin2.SetRange( 0, 100 );m_spin3.SetRange( 0, 100 );return TRUE;11.为CInputDlg添加IDC_SPIN1控件的UDN_DELTAPOS的消息
4、映射,并添加下列代码: void CInputDlg:OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult) NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;m_score1 += (float)pNMUpDown-iDelta * 0.5f;if (m_score1100.0) m_score1 = 100.0f;*pResult = 0;12.修改CInputDlg类中IDOK的BN_CLICKED消息映射的代码:OnOK()m_name.TrimLeft();m_number.TrimLeft();if(m_n
5、ame.IsEmpty() MessageBox(学生姓名不能为空!elseif(m_number.IsEmpty()学生学号不能为空! else CDialog:13.添加一学生成绩输入的对话框,按照设计要求添加控件并设置好各自的属性14.为IDD_DIALOG2创建对话框类CScoreDlg15.为CScoreDlg类中的IDC_LIST1和IDC_COMBO1添加控件变量m_list和m_combo16.为CScoreDlg类中的IDC_BUTTON1添加BN_CLICKED的消息映射,并添加下列代码: void CScoreDlg:OnButton1() CInputDlg dlg;i
6、f(IDOK=dlg.DoModal()if(m_combo.FindString(-1,dlg.m_number)name;m_list.AddString(str);学号:number;str.Format(成绩1:%4.1f,成绩2:%4.1f,成绩3:%4.1f,data-score1,data-score2,data-score3);18.编译并运行整个工程4)个人通讯簿2.创建一个工程名为Ex_Address的基于对话框应用程序3.添加并构造基本情况对话框,创建对话框类CBaseInfoDlg,添加成员变量m_strName、m_strNick、m_timeBirth、m_chSe
7、x,添加成员函数变量UpdateSexField4.添加并构造私人资料对话框,创建对话框类CPrivateDlg,添加成员变量m_strHOME、m_strTEL、m_GSM、m_Email5.添加并构造单位信息对话框,创建对话框类CWorkDlg,添加成员变量m_strWorkName、m_strADD、m_strTEL、m_strFAX6.设计主对话框,创建对话框类CEx_AddressDlg,添加成员变量m_List、m_Tab,添加成员函数SetDlgState和DoTab,并添加下列代码: void CEx_AddressDlg:SetDlgState(CWnd *pWnd, BOO
8、L bShow)pWnd-EnableWindow(bShow);if (bShow) ShowWindow(SW_SHOW); pWnd-CenterWindow();else pWnd-ShowWindow(SW_HIDE);void CEx_AddressDlg:DoTab(int nSel)if (nSel2) nSel = 2;if (nSel= 0) DoTab(nSelect);8.在CEx_AddressDlg:OnInitDialog中添加下列代码: m_Tab.SetImageList(&m_ImageList);m_Tab.InsertItem(0,基本情况,0);m_T
9、ab.InsertItem(1,私人资料,1);m_Tab.InsertItem(2,单位信息,2);m_Tab.SetCurSel(0);m_pBaseInfoDlg=new CBaseInfoDlg;m_pBaseInfoDlg-Create(IDD_DIALOG_BASEINFO,GetDlgItem(IDC_STATIC_DLG);m_pPrivateDlg=new CPrivateDlg;m_pPrivateDlg-(IDD_DIALOG_PRIVATE,GetDlgItem(IDC_STATIC_DLG);m_pWorkDlg=new CWorkDlg;m_pWorkDlg-Cre
10、ate(IDD_DIALOG_WORK,GetDlgItem(IDC_STATIC_DLG);DoTab(0);ADDRESS data,data1,data2; data.strName= data.strNick=Peter data.chSex=G data.tBirth=CTime(1984,5,6,0,0,0); data.strHomeAdd=江苏南京 data.strWorkName=南京师范大学 data1=data; data1.strName=WangFang data1.strNick=Mary data1.chSex=M data1.tBirth=CTime(1984,
11、12,5,0,0,0); int nIndex=m_List.AddString(data.strName); m_List.SetItemDataPtr(nIndex,new ADDRESS(data); nIndex=m_List.AddString(data1.strName); m_List.SetItemDataPtr(nIndex,new ADDRESS(data1);9.为CEx_AddressDlg类中的IDC_LIST1添加LBN_SELCHANGE的消息映射,并添加下列代码:OnSelchangeList1() int nIndex = m_List.GetCurSel()
12、;if (nIndex != LB_ERR)ADDRESS *data=(ADDRESS *)m_List.GetItemDataPtr(nIndex);m_strName = data-strName;m_strNick = data-strNick;m_chSex = data-chSex;m_timeBirth = data-tBirth;m_strHOME = data-strHomeAdd;m_strTEL = data-strHomeTel;m_strGSM = data-strGSM;m_strEmail = data-strEmail;m_strWorkName = data-
13、strWorkName;m_strADD = data-strWorkAdd;strWorkTel;m_strFAX = data-strWorkFax;UpdateData( FALSE );UpdateSexField(); 10.为CEx_AddressDlg添加成员变量m_nRedValue和m_Brush11.在CEx_AddressDlg: m_scrollRed.SetScrollRange(0, 255);m_sliderBlue.SetRange(0, 255);m_sliderGreen.SetRange(0, 255);m_nBlue = m_nGreen = m_nRe
14、dValue = 192;m_scrollRed.SetScrollPos(m_nRedValue);12.为CEx_AddressDlg添加WM_VSCROLL的消息映射,并添加下列代码:OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)int nID = pScrollBar-GetDlgCtrlID();if (nID = IDC_SCROLLBAR_RED)switch(nSBCode)case SB_LINEUP:m_nRedValue-;break;case SB_LINEDOWN:m_nRedValue+;case
15、 SB_PAGEUP:m_nRedValue -= 10;case SB_PAGEDOWN:m_nRedValue += 10;case SB_THUMBTRACK:m_nRedValue = nPos;if (m_nRedValue255) m_nRedValue = 255;Invalidate();OnVScroll(nSBCode, nPos, pScrollBar);13.为CEx_AddressDlg添加WM_CTLCOLOR的消息映射,并添加下列代码: HBRUSH CEx_AddressDlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtl
16、Color) COLORREF color = RGB(m_nRedValue, m_nGreen, m_nBlue);m_Brush.Detach();m_Brush.CreateSolidBrush(color);pDC-SetBkColor( color );return (HBRUSH)m_Brush;14. 编译并运行整个工程4 运行结果设计二 框架窗口界面设计1)创建一个单文档应用程序Ex_SDI,开始运行时主窗口框架的大小为屏幕的1/4大小,并移动到屏幕的右上角。当单击工具栏上的圆圈按钮时,该按钮呈按下状态,此时在窗口的客户区的光标为圆圈。当双击鼠标时,则状态栏上显示“你在(x,
17、y )处双击鼠标”(x ,y)为鼠标在客户区的位置)。若再单击工具栏上的圆圈按钮,则该按钮呈正常状态,光标变成原来的箭形,双击鼠标,状态栏上不再显示任何文本。2)在上述程序的基础上,改变窗口菜单为一个单一弹出式菜单“测试”,其下包含一菜单项“改变光标”(和工具按钮ID_TEST联动),且该菜单项拥有键盘快捷键“Ctrl+G”,要求右击鼠标时弹出“测试”菜单的子菜单。3)在上述程序的基础上,为Ex_SDI添加并设计具有动画效果的应用程序图标。1.学习完框架窗口界面之后开始实验。2.创建一个工程名为Ex_SDI的单文档应用程序3.在CEx_SDIApp:InitInstance函数的最后添加下列代
18、码: CRect rcDesktop; :GetWindowRect(GetDesktopWindow(),rcDesktop); m_pMainWnd-MoveWindow(rcDesktop.Width()/2,0,rcDesktop.Width()/2,rcDesktop.Height()/2);4.为CMainFrame类添加一个成员变量m_hCursor,添加WM_SETCURSOR的消息映射,并添加下列代码: BOOL CMainFrame:OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) BOOL bRes=CFrameWn
19、d:OnSetCursor(pWnd,nHitTest,message);if(nHitTest=HTCLIENT)&(m_bIsTest)m_hCursor=AfxGetApp()-LoadCursor(IDC_CURSOR1);SetCursor(m_hCursor);bRes=TRUE;return bRes;5.在CEx_SDIView类中添加WM_LBUTTONDBLCLK的消息映射,并添加下列代码:void CEx_SDIView:OnLButtonDblClk(UINT nFlags, CPoint point) CMainFrame*pFrame=(CMainFrame*)Af
20、xGetApp()-m_pMainWnd;CStatusBar*pStatus=&pFrame-m_wndStatusBar;if(pFrame-m_bIsTest)你在(%d,%d)处双击鼠标,point.x,point.y);str.Empty();if(pStatus)pStatus-SetPaneText(1,str);CView:OnLButtonDblClk(nFlags, point);6.删去菜单栏所有的菜单项,添加一个“测试”菜单,在Accelerator的IDR_MAINFRAME创建该菜单项的快捷键7.为CMainFrame添加WM_CONTEXTMENU的消息映射,并添
21、加下列代码:void CMainFrame:OnContextMenu(CWnd* pWnd, CPoint point) CMenu* pSysMenu = GetMenu();pSysMenu-GetSubMenu(0)-TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);8.添加四个图标资源,并绘制图标9.为CMainFrame添加一个成员函数ChangeIcon,并添加下列代码: void CMainFrame:ChangeIcon(UINT nIconID)HICON hIconNew = AfxGet
22、App()-LoadIcon(nIconID);HICON hIconOld = (HICON)GetClassLong(m_hWnd, GCL_HICON);if (hIconNew != hIconOld)DestroyIcon(hIconOld);SetClassLong(m_hWnd, GCL_HICON, (long)hIconNew);RedrawWindow();10.在CMainFrame:OnCreate函数的最后添加代码:SetTimer(1,500,NULL)11.为CMainFrame添加WM_TIMER的消息映射,并添加下列代码:OnTimer(UINT nIDEvent) static int icons = IDI_ICON1, IDI_ICON2, IDI_ICON3, IDI_ICON4; static int index = 0; ChangeI
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1