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

Các câu lệnh trong lập trình c trên win pptx

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 (191.22 KB, 25 trang )

LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

Các câu l nh trong l p trình c trên winệ ậ
 T p tin ậ Vidu1.H: ch a các khai báo liên quan đ n l p Cvidu1App:ứ ế ớ
 T p tin ậ MainFrm.H: ch a các khai báo liên quan đ n l p khung c aứ ế ớ ử
s chính (main frame) c a ng d ng.ổ ủ ứ ụ
 T p tin ậ Vidu1Doc.H: ch a các khai báo liên quan đ n tài li u.ứ ế ệ
 T p tin ậ Vidu1.RC: ch a các tài nguyên liên quan đ n menu, phímứ ế
nóng, h p h i tho i,…ộ ộ ạ
 T p tin ậ Vidu1.CPP: đ nh nghĩa các hàm đã khai báo trong l pị ớ
CVidu1App, là l p ch ng trình chính.ớ ươ
I- T O GIAO DI N:Ạ Ệ
1.CÂU L NH T O V TRÍ XU T HI N C A C A SỆ Ạ Ị Ấ Ệ Ủ Ử Ổ(vi tế trong mi nề
làm vi c classview->cmainfrane->precreatewindow)ệ
{
int xsize =GetSystemMetrics(SM_CXSCREEN);
int ysize =GetSystemMetrics(SM_CYSCREEN);
cs.cx=xsize*5/10;// n m gi a màng hìnhằ ữ
cs.cy=ysize*5/10;// n m gi a màng hìnhằ ữ
cs.x =(xsize-cs.cx )/2;
cs.y =(ysize-cs.cy )/2;
return true; // đã có trong câu câu l nhệ
}
2. LO I B MINIMIZE VÀ MAXIMIZEẠ Ỏ (vi t trong mi n nh trên)ế ề ư
{
cs.style&=~(WS_MAXIMIZEBOX);\\ lo i b thu nho phóng toạ ỏ
cs.style&=~(WS_MINIMIZEBOX);\\ lo i b thu xu ng thanh d iạ ỏ ố ướ
return true; // đã có trong câu câu l nhệ
}
3.KHÔNG CHO THAY Đ I KÍCH TH C C A S LÀM VI C:Ổ ƯỚ Ử Ổ Ệ


(vi t trong mi n làm vi c classview->cmainfrane->precreatewindow)ế ề ệ
{ cs.style&=~(WS_MAXIMIZEBOX);\\ lo i b thu nho phóng toạ ỏ
cs.style&=~(WS_MINIMIZEBOX);\\ lo i b thu xu ng thanh d iạ ỏ ố ướ
cs.style&=~ WS_THICKFRAME;
return true;// đã có trong câu câu l nhệ
}
4.T O C A S C C Đ I KHI NG D NG B T Đ U CH Y:Ạ Ử Ổ Ự Ạ Ứ Ụ Ắ Ầ Ạ
(Vào classview->cmainfrane-> tênd ánự App->initialized)
1
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

-Trong câu l nh:ệ m_pMainWnd->ShowWindow(SW_SHOW);
Đ i thành:ổ
=> m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);//tao cua so cuc dai khi
ung dung bat dau chay.
5. T o h p tho i:ạ ộ ạ
B1: Vào resource-> menu->t o tên m c trên thanh menuạ ụ
- Trong caption: gõ tên s t o khi ch y ch ng trình.ẽ ạ ạ ươ
Vd: B n mu n tao menu thông báo thì trong caption b n gõ :ạ ố ạ
&thongbao
Trong đó:& là đ t o phím t t khi ch y ch ng trình không c n nh nể ạ ắ ạ ươ ầ ấ
chu t.ộ
VD:&thongbao thì khi ch y ch ng trình ban ch c n nh n ALT+tạ ươ ỉ ầ ấ
Chú ý:-Trong m t menu không th t o phím t t gi ng nhau, b nộ ể ạ ắ ố ạ
mu n t o phím t t kí t nào thì ch c n đ “&” tr c kí t t đó.ố ạ ắ ự ỉ ầ ể ướ ự
Vd :t&hongbao: thì khi ch y nh n alt+Hạ ấ
- Đ a ch ID lúc này đang m , b n mu n nó hi n lên thì kích chu tị ỉ ờ ạ ố ệ ộ
vào pop-up đ b d u check.ể ỏ ấ
- Ghi đ a ch vào ID:ị ỉ

Thí d nhụ ư: ID_thongbao
*L u ý:ư
- Lúc này b n không đ c t o menu con d i thanh menu b n v aạ ượ ạ ở ướ ạ ừ
m i t o.ớ ạ
- Đ t o menu con b n kích l i vào pop-up, trên thanh menu s xu tể ạ ạ ạ ẽ ấ
hi n menu tr ng đ b n t o, b n ch c n kích vào đó.ệ ố ể ạ ạ ạ ỉ ầ
- Lúc này b n ph i đi n đ y đ thông tin:ạ ả ề ầ ủ
+ Caption là:tên
Đ t o phím t t cho menuể ạ ắ :
-> Cách 1 : dùng kí t «&ự » nh trênư
-> Cách 2 :tên\tctrl+kí tự
Vd :t&hôngbao\tctrl+T.
- Chú ý : Đ cho phim t t có hi u l c b n vào ể ắ ệ ự ạ resources->Accelerator->
IDR_MAINFRAME và t o phím t t đây.ạ ắ ở
+ ID : thì b n đánh đ a ch c a menu vàoạ ị ỉ ủ
B2 :Vào view->CFC classviewzard
- Opject IDs:Ch n tên đ a ch ID c a menu v a t oọ ị ỉ ủ ừ ạ
- Messager:+ Ch n command: vi t câu l nh cho menu v a t o b ngọ ế ệ ừ ạ ằ
2
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

cách click vào nó, n u b n không mu n thay đ i tên thì b n b m ok.ế ạ ố ổ ạ ấ
(Dùng đ t o h p tho i)ể ạ ộ ạ

+ Ch n update_command_UI: làm cho câu l nh vô hi u l c, ho c cóọ ệ ệ ự ặ
hi u l c.ệ ự
pCmdUI->Enable(m_bWzd);
 N u ế m_bWzd =TRUE thì menu tr nên ho t đ ng, ở ạ ộ
 N u ế m_bWzd = FALSE có k t qu ng c l i.ế ả ượ ạ

- Trong menber fuction: b n ch n tên v a m i t o-> nh n vào editạ ọ ừ ớ ạ ấ
code.
- Cú pháp t o h p tho i:ạ ộ ạ
{
AfxMessageBox(“Thông báo", MB_YESNO);
}
Vd:
AfxMessageBox(“b n đã t o thông báo thành công”,MB_OK);ạ ạ
6.T o thanh công c :ạ ụ
=>B1:Vào insert->resource->toolbar->new
- Lúc này b n t o thanh công c m i, b n ph i đ t tên đ a ch cho thanhạ ạ ụ ớ ạ ả ặ ị ỉ
c ng c b n v a m i t o b ng cách : kích chu t ph i vàoộ ụ ạ ừ ớ ạ ằ ộ ả
IDR_TOOLBAR1-> vào propertise -> đ i tênổ
- Các nút công c b n v a t o ph i ghi đ a ch ID cho nó b ng cách clickụ ạ ừ ạ ả ị ỉ ằ
chu t vào nó. ộ
=>B2:Vào classview->ch n m_wndtooolbarọ
- Trong hàm protected b n có th thêm đ i t ng hàm Ctoolbar vàoạ ể ố ượ ở
bên d i:ướ
Ctoolbar tên_đ i t ng;ố ượ
Vd: Ctoolbar hi;
=>B3: Vào CmainFrame -> oncreated() đ i tên nh b c2.ổ ư ướ
Vd:copy đo n mã và đ i tên cho phù h pạ ổ ợ
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD |
WS_VISIBLE | CBRS_TOP
3
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY |
CBRS_SIZE_DYNAMIC) ||

!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
L u ý:ư - B n ph i thay đ i các tên m_wndtoolbar => hi. ạ ả ổ
Trong đó :hi là tên b n t o trong khai báo hàm ctoolbar.ạ ạ ở
Và IDR_MAINFRAME ph i đ i thành tên đ a ch ID b n đ t B1.ả ổ ị ỉ ạ ặ ở

Khi vi c đ i tên hoàn t t b n có th s p x p thanh công c b ng cách:ệ ổ ấ ạ ể ắ ế ụ ằ
- Tìm đo n mã sau:ạ
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
Trong đó:
DockControlBar( CControlBar *pBar, UINT nDockBarID= 0);
pBar: con tr đ i t ng toolbarỏ ố ượ
nDockBarID: gtr xác đ nh v trí thanh công cị ị ị ụ
- m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);là Câu l nh dùngệ
đ di chuy n thanh toolbarể ể
 AFX_IDW_DOCKBAR_TOP : Toolbar x p vào phía trên vùngế
client c a s ử ổ
 AFX_IDW_DOCKBAR_BOTTOM : Toolbar x p vào phía d iế ướ
vùng client c a s ử ổ
 AFX_IDW_DOCKBAR_LEFT : Toolbar x p vào phía bên tráiế
vùng client c a sử ổ
 AFX_IDW_DOCKBAR_RIGHT : Toolbar x p vào phía bên ph iế ả
vùng client c a sử ổ
Vd:
hi.EnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&hi, AFX_IDW_DOCKBAR_BOTTOM );
7.Thêm text vào nút toolbar :
Vào cMainfram->cú pháp này đ c vi t trong Oncreate(…)ượ ế
- Cú pháp:
4
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

SetButtonText( int nIndex, LPCTSTR lpszText );
• nIndex: s th t c a nút thêm textố ứ ự ủ
• lpszText: chu i văn b n thêm vàoỗ ả
 Xác đ nh kích th c các nút trong toolbar và kích c iMageị ướ ướ
SetSizes( SIZE sizeButton, SIZE sizeImage );
Ví d :ụ
hi.SetButtonText(0,_T("mo"));
hi.SetSizes(CSize (40,36),CSize (15,14));
Trong đó:
0 là v trí nút c n thêm textị ầ
Hi : là tên thanh công c đ c t o trên.ụ ượ ạ ở
8.T o thanh tr ng thái:ạ ạ
B1: vào fileview->source file->MainFrm.cpp
- Trong hàm “static UINT indicators[] =” b n thêm thanh tr ng thái m i.ạ ạ ớ
Vd: ID_INDICATOR_TG,//do ng i dùng đ t tênườ ặ
B2:khai báo vao resoure->string table-> string table ->chon hàm có
ID_INDICATOR_ r i đ t tên cho no băng cách kích chu t ph i ->newồ ặ ộ ả
string->go tên
B2:T o hi n th cho cho ch danh: khai báo phía d i trongạ ể ị ỉ ở ướ
MainFrm.cpp
void CMainFrame::OnUpdateStbarnew(CCmdUI* pCmdUI)

{
pCmdUI->Enable(true);
}
Trong đó: Stbarnew do ng i dùng đ t.ườ ặ
B3:Vào fileview-> Header Files-> MainFrm.h
- Trong hàm protected gõ l nh:ệ
afx_msg void OnUpdateStbarnew(CCmdUI* pCmdUI);
B4: Tr l i b ng -> MainFrm.cpp:ở ạ ả
- Trong hàm BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) gõ l nh:ệ
ON_UPDATE_COMMAND_UI(ID_INDICATOR_TG,OnUpdateStbarnew)
B5: Nh n F7 ki m tra l i và nh n F5 đ ch y.ấ ể ỗ ấ ể ạ
5
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

II- CÁC HÀM Đ H A:Ồ Ọ
1.T o đ ng th ng:ạ ườ ẳ
B1:T o menu ho c thanh công c nh đã trình bày trên.ạ ặ ụ ư ở
B2:Vào view-> classwinzar.
B3:Ch n đ a ch ID ọ ị ỉ c a nút công c v a m i t o thanh toollbar ho c menuủ ụ ừ ớ ạ ở ặ
->click vào command->ok->edit code và gõ l nh:ệ
C1:
- Cú pháp: CDC * pDC = GetDC();; // Khai báo thi t b DC. ế ị
• ReleaseDC(hWnd, hDC); // Gi i phóng DCả
pDC -> LineTo(int X, int Y);
pDC -> MoveToEx(int X, int Y);
Vd: CDC*pDC=GetDC();
pDC->MoveTo(100,100);//t a đ g cọ ộ ố
pDC->LineTo(200,200);//chi u dài hình về ẽ
C2:

Khai báo:
POINT p,p1;
p.x=200 ;
p.y=200 ;
p1.x=100 ;
p1.y=100 ;
CDC*pDC=GetDC();
pDC->MoveTo(p1); //t a đ g cọ ộ ố
pDC->LineTo(p); //chi u dài hình về ẽ
2.Hình ch nh tữ ậ : ( vi t t ng t nh các b c t o đ ng th ng)ế ượ ự ư ở ướ ạ ườ ẳ
=> Hình ch nh t th ngữ ậ ườ :
- Cú pháp :
pDC -> Rectangle(int upX, int upY, int lowX, int lowY);
 upX, upY: góc trên bên trái
 lowX, lowY: góc d i bên ph iướ ả
vd:
CDC*pDC=GetDC();
pDC -> Rectangle(200,200,400,300);
=> Hình ch nh t vuông:ữ ậ
- Cú pháp:
pDC-> RoundRect(int x1, int y1, int x2, int y2, int x3, int y3)
vd : CDC*pDC=GetDC();
pDC-> RoundRect(200,200,400,300,50,50);
3.Hình elip(vi t t ng t nh các b c t o đ ng th ng)ế ượ ự ư ở ướ ạ ườ ẳ
6
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

- Cú pháp:
pDC->Ellipse(int upX, int upY, int lowX, int lowY);

 upX, upY: góc trên bên trái
 lowX, lowY: góc d i bên ph iướ ả
vd:
CDC*pDC=GetDC();
pDC->Ellipse(400,400,600,500);//(400,200,600,400)hình tròn
4.V Pie(Hình tròn Khuy t):ẽ ế ( vi t t ng t nh các b c t o đ ngế ượ ự ư ở ướ ạ ườ
th ng)ẳ
- Cú pháp:
pDC->pie(int upX, int upY, int lowX, int lowY, int Xs, int Ys, int Xe, int Ye);
 upX, upY: góc trên bên trái
 lowX, lowY: góc d i bên ph iướ ả
 Xs, Ys: Đi m b t đ u cungể ắ ầ
 Xe, Ye: Đi m k t thúc cungể ế
Vd:
CDC*pDC=GetDC();
pDC->Pie(100,100,200,200,150,100,200,150);//
(400,200,600,400,500,100,600,300)
5.Đ ng Li n K Nhau:ườ ề ề ( vi t t ng t nh các b c t o đ ng th ng)ế ượ ự ư ở ướ ạ ườ ẳ
- Cú pháp :
pDC->Polyline(POINT pt, int n);
 pt: m ng ch a các đi m t a đả ứ ể ọ ộ
 n : s l ng t a đố ượ ọ ộ
vd:
POINT pt[10];
{
int x;
int y;
}
pt[0].x=200;
pt[0].y=300;

pt[1].x=250;
pt[1].y=200;
7
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

pt[2].x=300;
pt[2].y=300;
pt[3].x=350;
pt[3].y=200;
pt[4].x=400;
pt[4].y=300;
CDC*pDC=GetDC();
pDC->Polyline(pt,5);
6.T o thu c tính bút vạ ộ ẽ : ( vi t t ng t nh các b c t o đ ng th ng)ế ượ ự ư ở ướ ạ ườ ẳ
- Cú pháp :
CPen pen(int style, int width, COLOREF color);
• Style: ki u bút v và có các giá tr :ể ẽ ị
– PS_DASH : G ch ngangạ
– PS_DASHDOT : G ch ngang ch mạ ấ
– PS_DASHDOTDOT : Gach ngang ch m ch mấ ấ
– PS_DOT : Ch mấ
– PS_SOLID : Đ ng th ng li n nét. ườ ẳ ề
• Width: đ dày c a bút vộ ủ ẽ
• Color: RGB(R, G, B)
CPen *pPen = pDC->SelectObject(&pen) //thi t l pế ậ
Vd:
CPen pen(PS_SOLID,3,RGB(19,211,65));
CPen*pPen = pDC->SelectObject(&pen) ;
- Chú ý: Ph i đ t tr c l nh t o đ h a.ả ặ ướ ệ ạ ồ ọ

7.T o ch i quétạ ổ ( T o màu n n)//ạ ề (vi t t ng t nh các b c t o đ ngế ượ ự ư ở ướ ạ ườ
th ng)ẳ
-Cú pháp:
 Cbrush Brush (COLOREF color)
• Color: RGB(R, G, B)
 Thi t l p ch i quét ế ậ ổ :
 CBrush *pBrush = pDC->SelectObject (&Brush)
- Chú ý: Ph i đ t tr c l nh t o đ h a.ả ặ ướ ệ ạ ồ ọ
Vd: CBrush Brush(RGB(0,255,0));
CBrush*pBrush = pDC->SelectObject(&Brush);
- HS_BDIAGONAL:
- HS_CROSS:
- HS_DIAGCROSS:
8
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

- HS_FDIAGONAL:
- HS_HORIZONTAL:
- HS_VERTICAL:
Vd:
CBrush Brush(HS_VERTICAL,RGB(0,250,0));
CBrush*pBrush = pDC->SelectObject(&Brush);
8.T o text lên c a s :ạ ử ổ (t ng t )ươ ự
- Cú pháp:
pDC->TextOut( x, y, string, strLength);
pDC-> SetTextAlign(TA_CENTER) // hàm thi t l pế ậ
Trong đó:
 pDC là device context c a c a s c n xu t.ủ ử ổ ầ ấ
 x, y đi m b t đ u c a chu i ký t trong client ể ắ ầ ủ ỗ ự

 string là m t con tr tr đ n m t chu i ký t .ộ ỏ ỏ ố ộ ỗ ự
 strLength là s ký t trong ch i c n xu t.ố ự ỗ ầ ấ
Ví d :ụ
void CMainFrame::Ontraitim()
{
// TODO: Add your command handler code here
CDC*pDC=GetDC();
CString str("Ban co mot trai tim tinh khuyet");
pDC->TextOut(400,100,str, str.GetLength());
pDC-> SetTextAlign(TA_CENTER) ;
}
9. Thi t l p màu ch :ế ậ ữ (Ph i đ t tr c l nh t o text.)ả ặ ướ ệ ạ
 pDC-> SetTextColor(COLOREF color);
Vd:
CDC*pDC=GetDC();
pDC-> SetTextColor(RGB(250,0,0));
 Thi t l p màu n n ế ậ ề (Ph i đ t tr c l nh t o text.)ả ặ ướ ệ ạ
 pDC-> SetBkColor(COLOREF color)
Vd:
9
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

CDC*pDC=GetDC();
pDC-> SetBkColor(RGB(250,0,0));
VD:T o hình ng i vi t trong mainfrm.cpp:ạ ườ ế
CDC*pDC=GetDC();
pDC->Ellipse(400,100,500,200);
pDC -> Rectangle(440,200,460,230);//co
pDC -> Rectangle(370,228,530,400);//than

pDC->Ellipse(423,125,443,133);
pDC->Ellipse(463,125,483,133);//MAT
pDC->MoveTo(453,140);
pDC->LineTo(444,155);
pDC->MoveTo(453,140);//MUI
pDC->LineTo(462,155);
pDC->MoveTo(444,155);
pDC->LineTo(462,155);
pDC->MoveTo(453,180);//MIENG
pDC->LineTo(428,170);
pDC->MoveTo(453,180);
pDC->LineTo(473,170);
pDC->MoveTo(370,228);
pDC->LineTo(290,420);
pDC->MoveTo(370,290);//taytrai
pDC->LineTo(300,420);
pDC->MoveTo(290,420);
pDC->LineTo(302,420);
pDC->MoveTo(530,230);
pDC->LineTo(610,420);
pDC->MoveTo(530,290);//tayphai
pDC->LineTo(600,420);
pDC->MoveTo(600,420);
pDC->LineTo(611,420);
pDC->MoveTo(370,400);
pDC->LineTo(355,600);
pDC->MoveTo(450,450);
10
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT


pDC->LineTo(375,600);//chan
pDC->MoveTo(530,400);
pDC->LineTo(545,600);
pDC->MoveTo(450,450);
pDC->LineTo(525,600);
pDC->MoveTo(355,600);
pDC->LineTo(375,600);
pDC->MoveTo(525,600);
pDC->LineTo(545,600);
CBrush Brush(RGB(50,250,0));
CBrush *pBrush = pDC->SelectObject (&Brush);
pDC->MoveTo(370,385);
pDC->LineTo(530,385);
pDC -> Rectangle(440,385,460,400);//thaclung
pDC-> SetTextColor(RGB(0,0,0));
pDC-> SetBkColor(RGB(250,0,0));
CString str("CHAO CAC BAN!!");// tao text
pDC->TextOut(400,80,str, str.GetLength());
pDC-> SetTextAlign(TA_CENTER) ;
10.Thu t v Bitmap(chèn nh):ậ ẽ ả
B1:t o menu ho c toolạ ặ
B2:T o ngu n Bitmap trong t p tài nguyên có đuôi .rc b ng cách:ạ ồ ậ ằ
Ch n file ->open->ch n đuôi .rc(trong save as ch n text)->open-ọ ọ ọ
>gõ l nh t o ngu n vào hình c n chèn.ệ ạ ồ ầ
Vd: ID_BITMAP BITMAP "C:\HINH\h.bmp".
ID do ng i dùng đ t.ườ ặ
B3:vào classwinzard->ch n đ a ch c n th c hi n(l p cmainfram)ọ ị ỉ ầ ự ệ ớ
->command(kích đôi)->edit code.
B4:gõ l nh:ệ

CBitmap bm;//khai báo
bm.LoadBitmap(ID_BITMAP);//n p bitmap t tài nguyên.ạ ừ
CDC*pDC=GetDC();
CDC mDC;
mDC.CreateCompatibleDC(pDC); //Đ t đ c ạ ượ DC c a b nh s ch a bitmapủ ộ ớ ẽ ứ
mDC.SelectObject(bm);// Ch n bitmap trong device context c aọ ủ
b nh .ộ ớ
11
Lấ QUANG V C TIN 31B
KHOA:CNTT

BITMAP TT;//khai bỏo
bm.GetObject(sizeof(TT),&TT);//nh p thụng tin c a bitmap
pDC->BitBlt (100,300,TT.bmWidth,TT.bmHeight,&mDC,0,0,SRCCOPY);
//Sao chộp bitmap t DC c a b nh sang DC c a c a s .
-Trong ú:bm,TT,mDC:do ng i l p trỡnh t.
B5: vo resouce.h nh ngha.
#define ID_BITMAP 32804 //s ny khụng trựng v i s
phớa trờn.
B6:ch y ch ng trỡnh
11.T o font cho text:
B1: t o ra text ó h c trờn
B2:thi t l p font: c vi t trờn text.
CFont Font;//do ng l p trỡnh t tờn
B3: g i
Font.CreateFont t o ra font cú thu c tớnh xỏc nh
Font.CreateFont(int Height, //kớch th c i m
0, 0, 0,
FW_NORMAL, // d y, cú th l FW_BOLD
0, // n u 1 nghiờng

0, // N u 1 g ch d i
0, //n u 1 g ch ngang
0,0, 0, 0,0,VNI-Times); //ki u ch .
B4: G i SelectObject() ci t Font vo vựng client.
Font.CreateFont(40,0,0,0,FW_BOLD,0,1,0,0,0,0,0,0,"VNI-Times");
CFont *pFont = (CFont *) pDC->SelectObject(&Font);
SetFont(pFont);//thi t l p.
Vd: void CMainFrame::Onhi()
{
// TODO: Add your command handler code here
CDC*pDC=GetDC();
CFont f;
f.CreateFont(40,0,0,0,FW_BOLD,0,1,0,0,0,0,0,0,"VNI-Times");
CFont *pFont = (CFont *) pDC->SelectObject(&f);
SetFont(pFont);
CString str("baùn ủaừ taùo font chửừ thaứnh coõng!!");
pDC->TextOut(400,300,str, str.GetLength());
pDC-> SetTextAlign(TA_CENTER) ;
12
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

}
III-HÀM X LÝ THÔNG ĐI P CHU T:Ữ Ệ Ộ
1).T o hình khi nh n chu t:ạ ấ ộ
B1:t o nút tool ho c menu ạ ặ
B2: vào classwinzard ch n l p view, ch n thông đi p chu t trong messagesọ ớ ọ ệ ộ
B3:khai báo bi n b ng cách kích chu t ph i vào l p view ch n Add Memberế ằ ộ ả ớ ọ
Varible…gõ ki u và bi n do ng i l p trình đ t.ể ế ườ ậ ặ
Vd:t o hình ch nh t và đ ng th ngạ ữ ậ ườ ẳ

B1:trong thông đi p chu t OnLButtonDownệ ộ
void CBaitap2View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (hinh==1)
{
if (lc==1)
{
pl.x=point.x;
pl.y=point.y ;
lc=2;
}
else
{
CDC*pDC=GetDC();
CBrush Brush (RGB(200,100,0));
CBrush *pBrush = pDC->SelectObject (&Brush);
pDC->Rectangle(pl.x,pl.y,point.x,point.y);
lc=1;
}
}
if (hinh==2)
{
if (lc==1)
{
pl.x=point.x;
pl.y=point.y ;
lc=2;
}
else

13
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

{
CDC*pDC=GetDC();
pDC->MoveTo(pl.x,pl.y);
pDC->LineTo(point.x ,point.y);
lc=1;
}
}
CView::OnLButtonDown(nFlags, point);
}
Trong đó:
Pl: khai báo Cpoint
Lc:ki u intể
B2: vào classview- ch n đ a ch ID do ng i l p trình t o->ch n trong l p view-ọ ị ỉ ườ ậ ạ ọ ớ
>command và gõ l nhệ
Vd:
void CBaitap2View::Onhinhcn()
{
// TODO: Add your command handler code here
hinh=1;
}
void CBaitap2View::Ondt()
{
// TODO: Add your command handler code here
hinh=2;
}
B4:vào ten_du_an_view->kích vào ten_du_an_view->gõ lc=1.

B3: ch y ch ng trình.ạ ươ
2.chen load
HBITMAP anh=(HBITMAP)LoadImage(NULL,"da
chinh.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
m_ANH.SetBitmap(anh);
UpdateData(false);
II.X LÝ B NG BÀN PHÍM: Ử Ằ
1.Di chuy n hình v :ể ẽ
- B1:khai báo bi n trong l p view b ng cách vao classview->kíchế ớ ằ
chu t ph i ch n ộ ả ọ add Member variable.
- B2:vào hàm kh i t o view->view gõ l nh do ng i l p trình đ t.ở ạ ệ ườ ậ ặ
14
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

Vd:lc=1;
- B3:vào hàm ondraw gõ l nh mu n th c hi n.ệ ố ự ệ
Vd: mu n v hình tròn thì gõ :ố ẽ
if (hinh==1)
{
CBrush Brush (RGB(0,200,0));
CBrush *pBrush = pDC->SelectObject (&Brush);
pDC->Ellipse(p1.x,p1.y,p2.x,p2.y);
}
- B4:t o hàm x lý thông đi p chu t.ạ ử ệ ộ
Vd:
{
// TODO: Add your message handler code here and/or call default
// hinh=1;
if (lc==1)

{
p1=point;
lc=2;
}
else
{
p2=point ;
Invalidate();
lc=1;
}
- b5: t o hàm x lý b ng bàn phím:ạ ử ằ
vd:
void CBaitap4View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if (nChar==VK_RIGHT)
{
p1.x=p1.x+20;
p2.x=p2.x+20;
Invalidate();
}
if (nChar==VK_LEFT)
{
15
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

p1.x=p1.x-20;
p2.x=p2.x-20;
Invalidate();

}
if (nChar==VK_UP)
{
p1.y=p1.y-20;
p2.y=p2.y-20;
Invalidate();
}
if (nChar==VK_DOWN)
{
p1.y=p1.y+20;
p2.y=p2.y+20;
Invalidate();
}
if (nChar==VK_DELETE)
{
p1.x=p1.x-p1.x;
p2.x=p2.x-p2.x;
p1.y=p1.y-p1.y;
p2.y=p2.y-p2.y;
}
CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
C2:T o câu l nh đ kích vào cái nào thì v hình đóạ ệ ể ẽ
-
void CBanphimView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (lc==1)
{
p1=point;

lc=2;
}
else
{
16
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

p2=point ;
Invalidate();
lc=1;
}
= vi t trong hàm on drawế
if(h==1)
{
CBrush Brush (RGB(0,200,0));
CBrush *pBrush = pDC->SelectObject (&Brush);
pDC->Ellipse(p1.x,p1.y,p2.x,p2.y);
}
if(h==2)
{
CBrush Brush (RGB(250,200,0));
CBrush *pBrush = pDC->SelectObject (&Brush);
pDC -> Rectangle(p1.x,p1.y,p2.x,p2.y);
}
if(h==3)
{
CBitmap bm;//khai báo
bm.LoadBitmap(ID_BITMAP);
CDC*pDC=GetDC();

CDC mDC;
mDC.CreateCompatibleDC(pDC);
mDC.SelectObject(bm);
BITMAP TT;//khai báo
bm.GetObject(sizeof(TT),&TT);//nh?p thông tin c?a bitmap
pDC->BitBlt (p1.x,p1.y,TT.bmWidth,TT.bmHeight,&mDC,0,0,SRCCOPY);
}
Bài t p 2 hình ch y tông vào nhau rôi b t raậ ạ ậ
B1:khai bao: int x1,x2,x3,x4,y1,y2,y3,y4,h1,h2;
B2:vào on draw:
CRect rs;
GetClientRect (&rs);
if(h1==1)
{
x1=rs.left;
17
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

x2=x1+100;
x4=rs.right;
x3=x4-100;
h1=2;
};
if(h2==1)
{
if((x2<=x3) && (x3>=x2))
{
x1=x1+5;
x2=x2+5;

x3=x3-5;
x4=x4-5;
}
else
{
h2=2;
}
}
if(h2==2)
{
if((x1>=rs.left) && (x4<=rs.right))
{
x1=x1-5;
x2=x2-5;
x3=x3+5;
x4=x4+5;
}
else
{
h2=1;
}
}
if(pDC->Ellipse(x1,y1,x2,y2))
{CPen pen(PS_SOLID ,3,RGB(155,200,0));
CPen *pPen = pDC->SelectObject(&pen) ;
CBrush Brush (RGB(250,255,0));
CBrush *pBrush = pDC->SelectObject (&Brush);
18
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT


pDC->Ellipse(x1,y1,x2,y2);
}
if( pDC->Ellipse(x3,y3,x4,y4))
{
CPen pen(PS_SOLID ,3,RGB(155,200,0));
CPen *pPen = pDC->SelectObject(&pen) ;
CBrush Brush (RGB(200,0,0));
CBrush *pBrush = pDC->SelectObject (&Brush);
pDC->Ellipse(x3,y3,x4,y4);
}
}
B3:t c đ hình ch y:ố ộ ạ
void CBaiktlopaView::OnInitialUpdate()
{
CView::OnInitialUpdate();
SetTimer(ID_TM2,10,NULL);
Chu kỳ:
void CBaiktlopaView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
Invalidate();
CView::OnTimer(nIDEvent);
}
B4:khai bao id_tm:vào view->resource sybol
B5:khai bao trong view
CBaiktlopaView::CBaiktlopaView()
{
// TODO: add construction code here
y1=100;y2=200;

y3=100;
y4=200;
h1=1;h2=1;
}
==Bay đ ng nhau và đ y ra trên xu ngụ ẩ ố
B1:khai báo
int x1,x2,x3,x4,y1,y2,y3,y4,h1,h2;
b2:vi t trong ondrawế
CRect rs;
GetClientRect (&rs);
19
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

if(h1==1)
{
y1=rs.top;
y2=y1+100;
y4=rs.bottom;
y3=y4-100;
h1=2;
};
if(h2==1)
{
if((y2<=y3) && (y3>=y2))
{
y1=y1+5;
y2=y2+5;
y3=y3-5;
y4=y4-5;

}
else
{
h2=2;
}
}
if(h2==2)
{
if((y1>=rs.top) && (y4<=rs.bottom))
{
y1=y1-5;
y2=y2-5;
y3=y3+5;
y4=y4+5;
}
else
{
h2=1;
}
}
if( pDC->Ellipse(x1,y1,x2,y2))
20
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

{CPen pen(PS_SOLID ,3,RGB(0,0,0));
CPen *pPen = pDC->SelectObject(&pen) ;
CBrush Brush (RGB(255,255,0));
CBrush *pBrush = pDC->SelectObject (&Brush);
pDC->Ellipse(x1,y1,x2,y2);

}
if( pDC->Ellipse(x3,y3,x4,y4))
{
CPen pen(PS_SOLID ,3,RGB(155,200,0));
CPen *pPen = pDC->SelectObject(&pen) ;
CBrush Brush (RGB(0,255,255));
CBrush *pBrush = pDC->SelectObject (&Brush);
pDC->Ellipse(x3,y3,x4,y4);
}
}
B3: t c đố ộ
void CBaiktlopaView::OnInitialUpdate()
{
CView::OnInitialUpdate();
SetTimer(ID_TM2,10,NULL);
// TODO: Add your specialized code here and/or call the base class
}
void CBaiktlopaView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
Invalidate();
CView::OnTimer(nIDEvent);
}
B4: khai báo trong view:
x1=400;x2=450;
x3=400;
x4=450;
h1=1;h2=1;
==đ y nhau tai m i v trí:ẩ ọ ị
21

LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

B1: trong hàm th c thiự
void CKTView::OnVeHinh()
{
// TODO: Add your command handler code here
kt=1;
GetClientRect(&rs1);
p1.x=rs1.left;
p2.x=rs1.left+50;
p3.x=rs1.right-50;
p4.x=rs1.right;
p1.y=(rs1.bottom / 2);
p2.y=(rs1.bottom / 2)+50;
p3.y=rs1.bottom / 2;
p4.y=(rs1.bottom / 2)+50;
Invalidate();
}
void CKTView::OnVeText()
{
// TODO: Add your command handler code here
kt=2;
GetClientRect(&rs1);
p1.x=rs1.left;
p2.x=rs1.left+50;
p3.x=rs1.right-50;
p4.x=rs1.right;
p1.y=(rs1.bottom / 2);
p2.y=(rs1.bottom / 2)+50;

p3.y=rs1.bottom / 2;
p4.y=(rs1.bottom / 2)+50;
Invalidate();
B2:on draw
CRect rs;
GetClientRect(&rs);
if (kt==1)
{
if (a==1)
{
if (p1.x>rs.left)
{
p1.x=p1.x-3;
p2.x=p2.x-3;
22
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

}
else
{
a=2;
}
}
if (a==2)
{
if (p2.x<p3.x)
{
p1.x=p1.x+3;
p2.x=p2.x+3;

}
else
{
a=1;
}
}
if (b==1)
{
if (p2.y<rs.bottom)
{
p1.y=p1.y+3;
p2.y=p2.y+3;
}
else
{
b=2;
}
}
if (b==2)
{
if (p1.y>rs.top)
{
p1.y=p1.y-3;
p2.y=p2.y-3;
}
else
{
b=1;
}
23

LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

}
if (c==1)
{
if (p3.x>p2.x)
{
p3.x=p3.x-3;
p4.x=p4.x-3;
}
else
{
c=2;
}
}
if (c==2)
{
if (p4.x<rs.right)
{
p3.x=p3.x+3;
p4.x=p4.x+3;
}
else
{
c=1;
}
}
if (d==1)
{

if (p4.y<rs.bottom)
{
p3.y=p3.y+3;
p4.y=p4.y+3;
}
else
{
d=2;
}
}
if (d==2)
{
if (p3.y>rs.top)
{
24
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

p3.y=p3.y-3;
p4.y=p4.y-3;
}
else
{
d=1;
}
}
CPen pen(PS_SOLID,2,RGB(0, 255,255));
CPen *pPen = pDC->SelectObject(&pen);
CBrush Brush (RGB(0, 255,0));
CBrush *pBrush = pDC->SelectObject (&Brush);

pDC -> Rectangle(p1.x, p1.y,p2.x,p2.y);
CPen pen1(PS_SOLID,2,RGB(222, 20,255));
CPen *pPen1 = pDC->SelectObject(&pen1);
CBrush Brush1 (RGB(230, 255,0));
CBrush *pBrush1 = pDC->SelectObject (&Brush);
pDC -> Rectangle(p3.x, p3.y,p4.x,p4.y);
}
pDC->TextOut(p1.x, p2.y,"Tran Tran Thao", 15);
pDC->TextOut(p3.x, p4.y,"Nguyen Van hien", 15);
}
=khai báo
void CKTView::OnInitialUpdate()
{
CView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
SetTimer(ID_tm,1,NULL);
}
void CKTView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
Invalidate();
CView::OnTimer(nIDEvent);
}
25

×