Tải bản đầy đủ (.pdf) (16 trang)

Tài liệu ÔN TẬP BÀI TẬP THỰC HÀNH LẬP TRÌNH doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (428.49 KB, 16 trang )



Ô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 stop


void 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;
}


m_ketqua.Format ("%0.0f",kq);
UpdateData (false);
}
Bài 2:
IDC_EDIT_NHAP
IDC_LIST
1
IDC_LIST2
IDC_BUTTON_PHAI chọn BN_CLICKED
IDC_BUTTON_TRAI chọn
BN_CLICKED
IDC_BUTTON_NHAP chọn BN_CLICKED

void CBai1_2Dlg::OnButtonNhap()
{
UpdateData (true);
m_list1.AddString (m_nhap);
m_nhap.Empty ();
UpdateData(false);
}
******************************************************
void CBai1_2Dlg::OnButtonPhai() //click button chuyen du lieu qua phai
{
UpdateData (true);
CString s;
int i;
i=m_list1.GetCurSel ();
m_list1.GetText (i,s);
m_list2.AddString (s);
m_list1.DeleteString(i);

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);
}
}
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Bài 3:
IDC_COMBO1 chọn:
à CBN_SELCHANGE
à CBN_SELENDOK
IDC_STATIC_1
chọn Group
Group
Box
Vào ComboBox chuột phải chọn Properties à
Data: nhập dữ liệu vào (chọn Ctrl+Enter để xuống
hàng)

Trong thẻ General à Type:
+ DropDown: cho phép lựa chọn + nhập dữ liệu
+ DropList: không nhập được dữ liệu
+ Simple: hiển thị giống listbox

void CBai1_4Dlg::OnSelendokCombo1()
{
UpdateData (true);
m_ketqua.Empty ();
int i=m_combo.GetCurSel ();
CString s,s1,s2;
m_combo.GetLBText (i,s);
int gt=i+1,tinh;
for(int j=1;j<=10;j++)
{
tinh=gt*j;
s1.Format ("%.0d",j);

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
{

protected:


double thuc;
double ao;
public:
//phuong thuc cap nhat du lieu
void SetComplex(double t,double a);
//nguyen mau phuong thuc tra ve phan thuc
double GetThuc();
//nguyen phuong thuc tra ve phan ao
double GetAo();
//nguyen mau phuong thuc cong hai so phuc
COMPLEX cong(COMPLEX z);
//nguyen mau phuong thuc tru hai so phuc
COMPLEX tru(COMPLEX z);
//nguyen mau phuong thuc nhan hai so phuc
COMPLEX nhan(COMPLEX z);
//nguyen mau phuong thuc chia hai so phuc
COMPLEX chia(COMPLEX z);
//nguyen mau ham tao hai tham so
COMPLEX(double t,double a);
//nguyen mau ham tao khong tham so
COMPLEX();
//nguyen mau ham huy
virtual ~COMPLEX();
//nguyen mau ham tao sao chep
COMPLEX(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);
//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;

}
//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;
}
//dinh nghia ham tao sao chep
COMPLEX::COMPLEX(COMPLEX& z)
{
thuc=z.thuc;
ao=z.ao;
}
//dinh nghia ham huy
COMPLEX::~COMPLEX()
{
}
//dinh nghia ham tao khong tham so
COMPLEX::COMPLEX()
{
thuc=0;
ao=0;
}
//dinh nghia ham tao hai tham so

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;

}
//dinh nghia phuong thuc chia hai so phuc
COMPLEX COMPLEX::chia(COMPLEX z)
{
COMPLEX t;
t.thuc=thuc/z.thuc;
t.ao=ao/z.ao;
return t;
}
//dinh nghia phuong thuc cap nhat du lieu
void COMPLEX::SetComplex(double t,double a)
{
//this->thuc=t;
//this->ao=a;
thuc=t;
ao=a;
}
//dinh nghia phuong thuc tra ve phan thuc
double COMPLEX::GetThuc()
{
return thuc;
}
double COMPLEX::GetAo()
{
return ao;
}
******************************************************
Viết trong Dialog chính.cpp
oid CBai2Dlg::OnButtonTinh()
{

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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



Bài 5:
Tương tự như bài 4 chúng ta cũng khai báo thêm lớp COMPLEX
Viết trong Dialog chính.cpp
void CBai3Dlg::OnButtonNhap()
{
UpdateData(true);
COMPLEX* p;
p=new COMPLEX(m_thuc,m_ao);
ds.Add(p);
m_list1.AddString(p->Print());
}
void CBai3Dlg::OnButtonCong()
{
COMPLEX* p;
COMPLEX s;
for(int i=0;i<ds.GetSize();i++)
{
p=(COMPLEX*)ds.GetAt(i);
s=s+(*p);
}
m_static_cong=s.Print();
UpdateData(false);
}
IDC_EDIT_THUC
IDC_EDIT_AO
IDC_STATIC_CONG
IDC_LIST1
IDC_BUTTON_NHAP chọn BN_CLICKED
IDC_BUTTON_CONG chọn BN_CLICKED
List Box chọn

tap stop


Bà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);

RATIO operator-(RATIO a);


RATIO operator*(RATIO a);
RATIO operator/(RATIO a);
RATIO operator+=(RATIO a);
RATIO operator-=(RATIO a);
RATIO operator*=(RATIO a);
RATIO operator/=(RATIO a);
bool operator==(RATIO a);
bool operator>(RATIO a);
bool operator>=(RATIO a);
// ham rut gon phan so:
RATIO Reduce(RATIO a);
CString Print();
};
*************************************************************
RATIO.cpp
ATIO::RATIO()
{
tuso=mauso=0;
}
RATIO::RATIO(int a,int b)
{
tuso=a;
mauso=b;
}
RATIO::RATIO(RATIO& c)
{
tuso=c.tuso;

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);

}
RATIO RATIO::operator-(RATIO a)
{
tuso=tuso*a.mauso-a.tuso*mauso;
mauso=mauso*a.mauso;
return Reduce(*this);
}
RATIO RATIO::operator*(RATIO a)
{
tuso=tuso*a.tuso;
mauso=mauso*a.mauso;
return Reduce(*this);
}
RATIO RATIO::operator/(RATIO a)
{
tuso=tuso*a.mauso;
mauso=mauso*a.tuso;
return Reduce(*this);
}
RATIO RATIO::operator+=(RATIO a)
{
*this=a+(*this);
return *this;
}
RATIO RATIO::operator-=(RATIO a)
{
*this=a-(*this);
return *this;
}
RATIO RATIO::operator*=(RATIO a)

{


*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;

return false;
}
RATIO RATIO::Reduce(RATIO p)
{
int a=abs(p.tuso);
int b=abs(p.mauso);
while(a!=b)
{
if(a>b)
a-=b;
else
b-=a;
}
p.tuso=p.tuso/a;
p.mauso=p.mauso/a;
return p;
}
CString RATIO::Print()
{
CString s_tuso,s_mauso,s;
if(tuso>0)
{
s_tuso.Format("%d",tuso);
s_mauso.Format("%d",mauso);
s=s_tuso +"/"+s_mauso;
}
else
{
s_tuso.Format("%d",tuso);
s_mauso.Format("%d",mauso);

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);

if(s>(*p))


s=(*p);
}
m_kq_tuso=s.GetTu();
m_kq_mauso = s.GetMau();
UpdateData(false);
}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Bài 7:
IDC_STATIC_CHUCHAY
IDC_CHECK1 chọn
BN_CLICKED

Viết trong BOOL CBai1_3Dlg::OnInitDialog()
UpdateData (true);
m_chuchay="- DOC LAP - TU DO - HANH PHUC ";
i=1;
UpdateData (false);
******************************************************
void CBai1_3Dlg::OnCheck1()
{
UpdateData (true);
if(m_check)
{
SetTimer (1,100,NULL);
}
else

{
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

IDC_DATETIMEPICKER_NGAYDI
IDC_EDIT_SONGAY
IDC_EDIT_TIENTRA
IDC_BUTTON_TINHTIEN
IDC_BUTTON_RESET
IDC_LIST1
Radio Button
Group Box chọn Tap
stop


ControlID(s)
Messages
ID_FILE_OPEN
COMMAND
ID_FILE_EXIT
ID_FILE_SAVE
IDC_BUTTON_RESET
BN_CLICKED
IDC_BUTTON_TINHTIEN


IDC_LIST1
NM_DBLCLK
CKhachsanDlg
Serialize

Khai báo thêm một lớp thông tin
thongtin.h
class Cthongtin : public CObject

{
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

bao",MB_ICONEXCLAMATION);
else
{
COleDateTimeSpan giatri;
giatri=m_ngaydi - m_ngayden;
//todo:phai ep kieu du lieu ngay thang nam khi lay ra
//m_static.Format ("%d",(int)giatri.GetTotalDays ());
m_songay=(int)giatri.GetTotalDays ();
m_tientra=(long)m_songay * loaiphong ();//co phuong thuc go
ham loaiphong()
UpdateData (false);
s1.Format ("%d",m_songay);
s2.Format ("%.0ld",m_tientra);
s3.Format ("%ld",loaiphong ());
s4.Format ("%d/%d/%d",m_ngayden.GetDay (),m_ngayden
.GetMonth (),m_ngayden .GetYear ());
s5.Format ("%d/%d/%d",m_ngaydi.GetDay (),m_ngaydi
.GetMonth (),m_ngaydi .GetYear ());
int n;
n=m_list.GetItemCount ();
m_list.InsertItem (n,m_hoten);
m_list.SetItemText (n,1,s4); //add ngay den vao ListCtrl
m_list.SetItemText (n,2,s5); //add ngay di vao ListCtrl
m_list.SetItemText (n,3,s3); //add loai phong vao ListCtrl
m_list.SetItemText (n,4,s1); //add so ngay thue vao ListCtrl
m_list.SetItemText (n,5,s2 +" " "VND"); //add tien tra vao ListCtrl
Cthongtin *p=new Cthongtin ();
p->mhoten =m_hoten;
p->mngayden =s4;
p->mngaydi =s5;

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;

if(dlg.DoModal()==IDOK)
{
b=f.Open (dlg.GetFileName (),CFile::modeRead|CFile::typeBinary);
if(b)
{
CArchive ar(&f,CArchive::load);
mArray.Serialize (ar);
Cthongtin *p;
int n;
CString s1,s2,s3;
for(int i=0;i<mArray.GetSize ();i++)
{
p=(Cthongtin*)mArray.GetAt (i);
n=m_list.GetItemCount ();
m_list.InsertItem (n,p->mhoten );
m_list.SetItemText (n,1,p->mngayden );
m_list.SetItemText (n,2,p->mngaydi );
s1.Format ("%d",p->mloai );
s2.Format ("%d",p->msongay );
s3.Format ("%ld",p->mtientra );
m_list.SetItemText (n,3,s1);
m_list.SetItemText (n,4,s2);
m_list.SetItemText (n,5,s3+ " ""VND");
}
ar.Close();
}f.Close ();
}
}
void CKhachsanDlg::OnFileSave()
{

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)
{

m_hoten =m_list.GetItemText (i,0);
//lay gia tri ho ten tu ListCtrl va dua len Dlg
s1=m_list.GetItemText (i,1);//lay gia tri ngay den
s2=m_list.GetItemText (i,2);//lay gia tri ngay di
s3=m_list.GetItemText (i,3);//lay gia tri loai phong
s4=m_list.GetItemText (i,4);//lay gia tri so ngay thue
s5=m_list.GetItemText (i,5);//lay gia tri tien tra

//todo: dua gia tri ngay den tu ListCtrl len Dlg
CString strngden;
int ngden,thden,namden;
strngden.Format ("%s",s1);
if(strngden.GetLength ()==8)
{
ngden=atoi(strngden.Left (1));
thden=atoi(strngden.Mid (2,1));
namden=atoi(strngden.Right (4));
}
else
{
if(strngden.GetLength ()==10)
{


ngden=atoi(strngden.Left (2));
thden=atoi(strngden.Mid (3,2));
namden=atoi(strngden.Right (4));
}
else
if(strngden.GetLength ()==9 && strngden.Mid (1,1)=="/")

{
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));

}
else
if(strngdi.GetLength ()==9 && strngdi.Mid (1,1)=="/")
{
ngdi=atoi(strngdi.Left (1));
thdi=atoi(strngdi.Mid (2,2));
namdi=atoi(strngdi.Right(4));
}
else
{
ngdi=atoi(strngdi.Left (2));
thdi=atoi(strngdi.Mid (3,1));
namdi=atoi(strngdi.Right (4));
}
}
m_ngaydi.SetDate (namdi ,thdi, ngdi);
//todo: dua gia loai phong len Dlg
int mgiaphong=atoi(s3);
switch(mgiaphong)
{
case 100000: m_loai =0;break;
case 150000: m_loai =1;break;
case 200000: m_loai =2;break;
case 250000: m_loai =3;break;
}
//todo: dua cac gia tri so ngay thue va tien tra len Dlg
m_songay=atoi(s4);
m_tientra=atol(s5);
}
}

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);

m_list.InsertColumn(3,"Loai phong",LVCFMT_LEFT,100);
m_list.InsertColumn(4,"So ngay thue",LVCFMT_LEFT,120);
m_list.InsertColumn(5,"So tien tra",LVCFMT_LEFT,120);
UpdateData (false);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Cách tạo môt ứng dụng vẽ hình 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 Single Document (dùng để vẽ hình)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



Bài 9:
hinh.cpp
CHinh::CHinh()
{
}
CHinh::~CHinh()
{
}
void CHinh::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
ar<<m_Old<<m_Cur<<m_Draw<<m_Color<<m_Width;
}
else

{
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()
{
}


BOOL CVehinhView::PreCreateWindow(CREATESTRUCT& cs)
{
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CVehinhView drawing
void CVehinhView::OnDraw(CDC* pDC)
{
CVehinhDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

int i;
for(i=0;i<pDoc->mArray.GetSize ();i++)
{


CHinh *p=(CHinh *)pDoc ->mArray .GetAt (i);
mPen.DeleteObject ();
mPen.CreatePen (PS_SOLID,p->m_Width,p->m_Color);
CPen* pPen=pDC ->SelectObject (&mPen);
switch(p->m_Draw )
{
case 0:
pDC ->MoveTo (p->m_Old );
pDC ->LineTo (p->m_Cur );
break;
case 1:
pDC ->Rectangle (p->m_Old.x,p->m_Old.y,p->m_Cur.x,p->m_Cur.y);
break;

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)

{
return DoPreparePrinting(pInfo);
}
void CVehinhView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}
void CVehinhView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}
/////////////////////////////////////////////////////////////////////////////
// CVehinhView diagnostics
#ifdef _DEBUG
void CVehinhView::AssertValid() const
{
CView::AssertValid();
}
void CVehinhView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CVehinhDoc* CVehinhView::GetDocument()
{
ASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CVehinhDoc)));
return (CVehinhDoc*)m_pDocument;
}
/////////////////////////////////////////////////////////////////////////////
// CVehinhView message handlers
void CVehinhView::OnLButtonDown(UINT nFlags, CPoint point)
{
mOld =point;

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()
{

mDraw=0;
}
void CVehinhView::OnButtonEllip()
{
mDraw=2;
}
void CVehinhView::OnButtonHinhchunhat()
{
mDraw=1;
}
void CVehinhView::OnButtonColor()
{
CColorDialog dlg(mColor);
if(dlg.DoModal ()==IDOK)
{
mColor =dlg.GetColor ();
}
}
void CVehinhView::OnButtonWidth()
{
CWidth dlg;
//mWidth la cua dlg width, mWidth la cua View
dlg.mWidth =mWidth;
// dlg.m_width.Format ("%d",mWidth);
dlg.DoModal ();
mWidth=dlg.mWidth ;
}

void CVehinhView::OnButtonPattern()
{

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 ());

UpdateData (false);
return TRUE;
}
void CWidth::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
m_width.Format ("%d",m_slider.GetPos ());
UpdateData (false);
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CWidth::OnOK()
{
mWidth=m_slider.GetPos ();

CDialog::OnOK();
}


Đây là bài vẽ hình tổng hợp, có
cả màu sắc, độ rộng, và cách
vẽ các kiểu. Coi kỹ trong phần
vehinhView
Phần này chủ yếu là viết
code, ít thiết kế. Chỉ thiết kế
mỗi phần độ rộng (width) của
nét vẽ



×