Hướng dẫn từng bước thao tác C trên Win (MFC) - Pdf 16

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 (lop)classview->chon lop cmainfrane->precreatewindow)
//BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
//{
// if( !CFrameWnd::PreCreateWindow(cs) )
// return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
int xsize =GetSystemMetrics(SM_CXSCREEN);
int ysize =GetSystemMetrics(SM_CYSCREEN);
cs.cx=xsize*5/10;// nằm giữa màn hình
cs.cy=ysize*5/10;// nằm giữa màn hình
cs.x =(xsize-cs.cx )/2;
cs.y =(ysize-cs.cy )/2;
//return true;
Chú ý: thay vì những câu lệnh đã có sẵn trong chương trình ta ghi chép lại nên
chúng ta để chúng nằm trong dấu 2 sẹt // nha.
2 . LOẠI BỎ MINIMIZE VÀ MAXIMIZE (viết trong miền làm việc

tắt cho thao tác được nhanh hơn khi chọn menu thongbao ấy bằng
cách sử dụng fím 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ự đó.
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 :&thôngbao\tctrl+T
Kết quả xuất hiện bây giờ đó là : thôngbao ctrl+t
2
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

- Chú ý : Để cho phim tắt có hiệu lực bạn vào
Resources View->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 trên thanh công cụ-> classviewzard (hoặc Ctrl+W)

Ctoolbar tên_đối tượng;
3
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

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

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:
5
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

ON_UPDATE_COMMAND_UI(ID_INDICATOR_TG,OnUpdateStbarnew)
B5: Nhấn F7 kiểm tra lỗi và nhấn F5 để chạy.
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

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

- 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)
- 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 độ

– 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ình vẽ ý
Vd: CBrush Brush(RGB(0,255,0));
CBrush*pBrush = pDC->SelectObject(&Brush);
8
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

- HS_BDIAGONAL:
- HS_CROSS:
- HS_DIAGCROSS:
- HS_FDIAGONAL:
- HS_HORIZONTAL:
- HS_VERTICAL:
Vd:

 pDC-> SetBkColor(COLOREF color)
Vd:
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

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
11
LÊ QUANG VŨ CĐ TIN 31B
KHOA:CNTT

mDC.SelectObject(bm);// Chọn bitmap trong device context của
bộ nhớ.
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: vào resouce.h định nghĩa.
#define ID_BITMAP 32804 //số này không trùng với số
ở phía trên.
B6:chạy chương trình
11.Tạo font cho text:

pDC-> SetTextAlign(TA_CENTER) ;
}
III-HM X Lí THễNG IP CHUT:
1).To hỡnh khi nhn chut:
B1:to nỳt tool hoc menu
B2: vo classwinzard chn lp view, chn thụng ip chut trong messages
B3:khai bỏo bin bng cỏch kớch chut phi vo lp view chn Add Member
Variblegừ kiu v bin do ngi lp trỡnh t.
Vd:to hỡnh ch nht v ng thng
B1:trong thụng ip chut 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;
}
}

// 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.
14


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status