ÔN TẬP BÀI TẬP THỰC HÀNH
LẬP TRÌNH WINDOW
******************************************************
Bài 1:
IDC_EDIT_A
IDC_EDIT_B
IDC_STATIC_KETQUA
IDC_BUTTON_TINH chọn BN_CLICKED
IDC_RADIO_CONG
Chọn Group
Radio Button
Group Box chọn Tab stopvoid CBai1_1Dlg::OnButtonTinh()
{
UpdateData (true);
float kq;
switch (m_pheptinh)
{
case 0:
kq=m_a + m_b; break;
case 1:
kq=m_a - m_b; break;
case 2:
kq=m_a * m_b; break;
case 3:
kq=m_a / m_b; break;
}
UpdateData (false);
}
******************************************************
void CBai1_2Dlg::OnButtonTrai() //click button chuyen du lieu qua trai
{
int j,i,tong;
CString s;
//thuc hien viec chuyen cac gia tri duoc chon qua list1
tong=m_list2.GetCount ();//tinh tong cac dong trong listcontrol for (j=0;j<tong;j++ )
{
if (m_list2.GetSel(j)==1)
{
m_list2.GetText (j,s);
m_list1.AddString (s);
m_list2.DeleteString (j);
}
}
//thuc hien xoa cac gia tri bi chuyen trong list2
tong=m_list2.GetCount ();
for (i=0;i<tong;i++ )
{
if (m_list2.GetSel(i)==1)
{
m_list2.DeleteString (i);
}
}
}
s2.Format ("%.0d",tinh);
m_ketqua=m_ketqua + s +" x "+ s1 +"= "+ s2 +"\n";
}
UpdateData (false);
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Bài 4:
IDC_EDIT_at
IDC_EDIT_bt
IDC_EDIT_kqt
IDC_EDIT_a
a
IDC_EDIT_b
a
IDC_EDIT_kqa
IDC_RADIO_CONG chọn
Group
IDC_BUTTON_TINH chọn BN_CLICKED
Group Box chọn Tab stop
Bài này chúng ta phải khai báo thêm lớp COMPLEX
Insert à New Class à - ClassType: Generic Class
- Name: COMPLEX
- FileName: COMPLEX.cpp
- Base class(es): + Derived From: CObject
+ As: public
******************************************************
COMPLEX.h
class COMPLEX : public CObject
{
//nguyen mau phuong thuc toan tu -
COMPLEX operator -(COMPLEX z);
//nguyen mau phuong thuc toan tu *
COMPLEX operator *(COMPLEX z);
//nguyen mau phuong thuc toan tu /
COMPLEX operator /(COMPLEX z);
//nguyen mau phuong thuc toan tu =
COMPLEX& operator =(COMPLEX& z);
};
******************************************************
COMPLEX.cpp
//dinh nghia phuong thuc toan tu =
COMPLEX& COMPLEX::operator =(COMPLEX& z)
{
thuc=z.thuc;
ao=z.ao;
return *this;
}
//dinh nghia phuong thuc toan tu +
COMPLEX COMPLEX::operator +(COMPLEX z)
{
COMPLEX t(thuc+z.thuc,ao+z.ao);
return t;
}
//dinh nghia phuong thuc toan tu -
COMPLEX COMPLEX::operator -(COMPLEX z)
{
COMPLEX t(thuc-z.thuc,ao-z.ao);
return t;
COMPLEX::COMPLEX(double t,double a) {
thuc=t;
ao=a;
}
//dinh nghia phuong thuc cong hai so phuc
COMPLEX COMPLEX::cong(COMPLEX z)
{
COMPLEX t;
t.thuc=thuc+z.thuc;
t.ao=ao+z.ao;
return t;
}
//dinh nghia phuong thuc tru hai so phuc
COMPLEX COMPLEX::tru(COMPLEX z)
{
COMPLEX t;
t.thuc=thuc-z.thuc;
t.ao=ao-z.ao;
return t;
}
//dinh nghia phuong thuc nhan hai so phuc
COMPLEX COMPLEX::nhan(COMPLEX z)
{
COMPLEX t;
t.thuc=thuc*z.thuc;
t.ao=ao*z.ao;
return t;
COMPLEX a,b,kq;
UpdateData(true);
a.SetComplex(m_a_thuc,m_a_ao);
b.SetComplex(m_b_thuc,m_b_ao);
switch (m_pheptinh)
{
case 0:
kq=a+b; break;
case 1:
kq=a-b; break;
case 2:
kq= a*b; break;
case 3:
kq=a/b; break;
}
m_ketqua_thuc=kq.GetThuc();
m_ketqua_ao=kq.GetAo();
UpdateData(false);
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Cách tạo môt ứng dụng trong Microsoft Visual C++
File à New àXuất hiện cửa sổ New, ta chọn thẻ Projects, sau đó chọn đủ 3
bước sau:
B1: Chọn MFC AppWizard(exe)
B2: Xác định thư mục chứa ứng dụng trong mục Location
B3: Đặt tên cho ứng dụng trong mục Project Name àXuất hiện cửa sổ MFC
AppWizard àChọn Dialog Based
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
tap stopBài 6:
Editbox
Các nút nhớ add BN_CLICKED
Group Box
List Box chọn Tap
stop
Khai báo thêm lớp RATIO:
RATIO.h
class RATIO : public CObject
{
private:
int tuso;
int mauso;
public:
virtual ~RATIO(); // ham huy
// ham tao
RATIO();
RATIO(int a,int b);
RATIO(RATIO& c); // ham tao sao chep
void SetPhanSo(int a, int b); // gan gia tri phan so
// tra ve tu so va mau so
int GetTu();
int GetMau();
// nguyen mau cac toan tu ket hop, co ban, so sach
RATIO operator=(RATIO a);
RATIO operator+(RATIO a);
mauso=c.mauso;
}
RATIO:: ~RATIO()
{
}
void RATIO::SetPhanSo(int a, int b)
{
tuso=a;
mauso=b;
}
int RATIO::GetTu()
{
return tuso;
}
int RATIO::GetMau()
{
return mauso;
}
RATIO RATIO::operator=(RATIO a)
{
tuso=a.tuso;
mauso=a.mauso;
return *this;
}
RATIO RATIO::operator+(RATIO a)
{
tuso=tuso*a.mauso+a.tuso*mauso;
mauso=mauso*a.mauso;
return Reduce(*this);
{ *this=a*(*this);
return *this;
}
RATIO RATIO::operator/=(RATIO a)
{
*this=a/(*this);
return *this;
}
bool RATIO::operator==(RATIO a)
{
RATIO b;
b= Reduce(*this);
a=Reduce(a);
if((a.tuso=b.tuso)&&(a.mauso=b.mauso))
return true;
return false;
}
bool RATIO::operator>(RATIO a)
{
if((((double)tuso/(double)mauso)-((double)a.tuso/(double)a.mauso))>0)
return true;
return false;
}
bool RATIO::operator>=(RATIO a)
{
if(((double)tuso/(double)mauso)>=((double)tuso/(double)mauso))
return true;
s="-"+s_tuso +"/"+s_mauso;
}
return s;
}
******************************************************
Viết trong dialog chính .cpp
void CBaitapTH_5_PhansoDlg::OnButton1()
{
UpdateData(true);
RATIO* p;
p=new RATIO(m_tuso,m_mauso);
ds.Add(p);
m_list.AddString(p->Print());
UpdateData(false);
}
void CBaitapTH_5_PhansoDlg::OnButton2()
{
UpdateData(true);
if(ds.GetSize()==0)
{
MessageBox("Ko co phan tu nao de tin kiem !","Thong bao");
}
else
{
RATIO* p;
RATIO s=(*(RATIO*)ds.GetAt(0));
for(int i =0;i<ds.GetSize();i++)
{
p=(RATIO*)ds.GetAt(i);
{
KillTimer (1);
}
UpdateData (false);
}
void CBai1_3Dlg::OnTimer(UINT nIDEvent)
{
UpdateData (true);
switch(nIDEvent )
{
case 1:
int dodai;
CString s,s1,s2;
s=m_chuchay;
dodai=s.GetLength ();
s1=m_chuchay.Left (dodai-1);
s2=m_chuchay.Right (1);
s.Replace (s,s1);
m_chuchay=s2+s;
break;
}
UpdateData (false);
CDialog::OnTimer(nIDEvent);
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Bài 8:
Tên menu: IDR_MENU1
IDC_EDIT_HOTEN
IDC_DATETIMEPICKER_NGAYDE
N
{
public:
DECLARE_SERIAL(Cthongtin)
void Serialize(CArchive& ar);
long mtientra;
int msongay;
int mloai;
CString mhoten,mngayden,mngaydi;
Cthongtin();
virtual ~Cthongtin();
};
thongtin.cpp
void Cthongtin::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{ // storing code
ar<<mhoten<<mngayden <<mngaydi <<mloai<<msongay <<mtientra;
}
else
{ // loading code
ar>>mhoten>>mngayden >>mngaydi >>mloai>>msongay >>mtientra;
}
}
Khachsan.cpp
void CKhachsanDlg::OnButtonTinhtien()
{
UpdateData (true);
CString s1,s2,s3,s4,s5;
if(m_ngayden >=m_ngaydi || m_hoten.IsEmpty () || m_loai ==-1)
MessageBox ("Chua nhap, hay chon gia tri roi? ","Thong
p->mloai =loaiphong();
p->msongay =m_songay;
p->mtientra =m_tientra;
mArray.Add (p);
m_reset.ShowWindow (true);
m_tinhtien.ShowWindow (false);
}
}
long CKhachsanDlg::loaiphong()
{
switch(m_loai)
{
case 0: return 100000; break;
case 1: return 150000; break;
case 2: return 200000; break;
case 3: return 250000; break;
}
return 0;
}
void CKhachsanDlg::OnFileExit()
{
exit(1); }
void CKhachsanDlg::OnFileOpen()
{
CFileDialog dlg(true);
CFile f;
BOOL b;
CFileDialog dlg(false);
CFile f;
if(dlg.DoModal ()==IDOK)
{
f.Open
(dlg.GetFileName(),CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);
CArchive ar(&f,CArchive::store);
mArray.Serialize (ar);
ar.Close();
f.Close ();
}
}
void CKhachsanDlg::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{ // storing code
}
else
{ // loading code
}
}
void CKhachsanDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{
CString s1,s2,s3,s4,s5;
for(int i=0;i<m_list.GetItemCount ();i++)
{
if(m_list.GetItemState
(i,LVIS_SELECTED)==LVIS_SELECTED)
{
{
ngden=atoi(strngden.Left (1));
thden=atoi(strngden.Mid (2,2));
namden=atoi(strngden.Right(4));
}
else
{
ngden=atoi(strngden.Left (2));
thden=atoi(strngden.Mid (3,1));
namden=atoi(strngden.Right (4));
}
}
m_ngayden .SetDate (namden,thden ,ngden);
//todo:: dua gia tri ngay di tu ListCtrl len Dlg
CString strngdi;
int ngdi,thdi,namdi;
strngdi.Format ("%s",s2);
if(strngdi.GetLength ()==8)
{
ngdi=atoi(strngdi.Left (1));
thdi=atoi(strngdi.Mid (2,1));
namdi=atoi(strngdi.Right (4));
}
else
{
if(strngdi.GetLength ()==10)
{
ngdi=atoi(strngdi.Left (2));
thdi=atoi(strngdi.Mid (3,2));
namdi=atoi(strngdi.Right (4));
UpdateData (false);
*pResult = 0;
}
void CKhachsanDlg::Reset()//add function vao nhe
{
//todo: viet lenh reset noi dung, de nhap moi
m_hoten.Empty ();
m_ngayden =COleDateTime ::GetCurrentTime ();
m_ngaydi =COleDateTime ::GetCurrentTime ();
m_songay=0;
m_tientra=0;
m_loai=-1;
UpdateData (false);
}
void CKhachsanDlg::OnButtonReset()
{
Reset ();
m_tinhtien.ShowWindow (true);
m_reset.ShowWindow (false);
UpdateData (false);
}
************************************************************** Viết trong BOOL CKhachsanDlg::OnInitDialog()
UpdateData (true);
m_reset.ShowWindow (false);
m_list.InsertColumn (0,"Ho ten",LVCFMT_LEFT,120);
m_list.InsertColumn(1,"Ngay bat dau",LVCFMT_LEFT,120);
m_list.InsertColumn(2,"Ngay ket thuc",LVCFMT_LEFT,120);
{
ar>>m_Old>>m_Cur>>m_Draw>>m_Color>>m_Width;
}
}
*****************************************************************
hinh.h
class CHinh : public CObject
{
public:
CPoint m_Old,m_Cur;
int m_Draw;
int m_Width;
COLORREF m_Color;
DECLARE_SERIAL(CHinh);
void CHinh::Serialize(CArchive& ar);
CHinh();
virtual ~CHinh();
};
*****************************************************************
vehinhView.cpp
CVehinhView::CVehinhView()
{
mDraw=0;
mWidth=1;
mColor =RGB(155,160,0);
mBitmap.LoadBitmap (IDB_BITMAP1);
}
CVehinhView::~CVehinhView()
{
}
case 2:
pDC ->Ellipse (p->m_Old.x,p->m_Old.y,p->m_Cur.x,p->m_Cur.y);
break;
}
pDC ->SelectObject (p);
}
//ve hinh moi******************************
CBrush* pBrush=pDC ->SelectObject (&mBrush);
mPen.DeleteObject ();
mPen.CreatePen (PS_SOLID,mWidth,mColor );
CPen* opPen=pDC ->SelectObject (&mPen);
switch(mDraw )
{
case 0:
pDC ->MoveTo (mOld);
pDC ->LineTo (mCur);
break;
case 1:
pDC ->Rectangle (mOld.x,mOld.y,mCur.x,mCur.y);
break;
case 2:
pDC ->Ellipse (mOld.x,mOld.y,mCur.x,mCur.y);
break;
}
pDC ->SelectObject (opPen);
pDC ->SelectObject (pBrush);
}
/////////////////////////////////////////////////////////////////////////////
// CVehinhView printing
BOOL CVehinhView::OnPreparePrinting(CPrintInfo* pInfo)
CView::OnLButtonDown(nFlags, point);
}
void CVehinhView::OnMouseMove(UINT nFlags, CPoint point)
{
if(nFlags & MK_LBUTTON)
{
mCur=point;
Invalidate();
}
CView::OnMouseMove(nFlags, point);
}
void CVehinhView::OnLButtonUp(UINT nFlags, CPoint point)
{
CVehinhDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);
CHinh *p;
p=new CHinh;
p->m_Old =mOld;
p->m_Cur =mCur;
p->m_Draw =mDraw;
p->m_Width =mWidth;
p->m_Color =mColor;
pDoc->mArray .Add (p);
CView::OnLButtonUp(nFlags, point);
}
void CVehinhView::OnButtonDoanthang()
{
mBrush.DeleteObject ();
mBrush.CreatePatternBrush (&mBitmap);//truyen tham bien
}
void CVehinhView::OnButtonHatch()
{
mBrush.DeleteObject ();
mBrush.CreateHatchBrush (HS_VERTICAL,mColor );
}
void CVehinhView::OnButtonSolid()
{
mBrush.DeleteObject ();
mBrush.CreateSolidBrush (mColor);
}
**********************************************************
vehinhView.h
public:
CBrush mBrush;
CBitmap mBitmap;
CPoint mOld,mCur;
int mDraw;
CPen mPen;
int mWidth;
COLORREF mColor;
**********************************************************
Width.cpp
BOOL CWidth::OnInitDialog()
{ CDialog::OnInitDialog();
m_slider.SetRange (1,10);
m_slider.SetPos (mWidth);
m_width.Format ("%d",m_slider.GetPos ());