Các câu lệnh trong lập trình c trên win
lượt xem 73
download
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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Các câu lệnh trong lập trình c trên win
- 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ự ánApp->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 góc dưới bên phải lowX, lowY: 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 góc dưới bên phải lowX, lowY: 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ị: : Gạch ngang – PS_DASH : Gạch ngang chấm – PS_DASHDOT : Gach ngang chấm chấm – PS_DASHDOTDOT : Chấm – PS_DOT : Đường thẳng liền nét. – PS_SOLID 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: vào resouce.h định nghĩa. 32804 //số này không trùng với số #define ID_BITMAP ở 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 // 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,0,“VNI-Times”); //kiểu chữ . B4: Gọi SelectObject() cài đặt Font vào 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=x2)) { x1=x1+5; x2=x2+5; x3=x3-5; x4=x4-5; } else { h2=2; } } if(h2==2) { if((x1>=rs.left) && (x4Ellipse(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=y2)) { y1=y1+5; y2=y2+5; y3=y3-5; y4=y4-5; } else { h2=2; } } if(h2==2) { if((y1>=rs.top) && (y4Ellipse(x1,y1,x2,y2)) 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Các câu lệnh và hàm cơ bản trong Visual Basic 6
7 p | 1548 | 92
-
Hướng dẫn từng bước thao tác C trên Win (MFC)
14 p | 363 | 83
-
Câu lệnh điều khiển và rẽ nhánh
33 p | 155 | 25
-
CÁC CÂU LỆNH CƠ BẢN QUẢN LÝ CÁC ĐỐI TƯỢNG TRONG ACTIVE DIRECTORY
6 p | 253 | 25
-
Bài giảng Lập trình cơ bản bài 7: Các cấu trúc điều khiển
44 p | 199 | 24
-
Lập trình C căn bản - Chương 3 - CÁC CÂU LỆNH ĐƠN TRONG C
0 p | 185 | 17
-
Bài giảng Ngôn ngữ lập trình C - Chương 2: Các câu lệnh rẽ nhánh
9 p | 113 | 10
-
Bài giảng Nhập môn lập trình: Câu lệnh điều kiện & câu lệnh rẽ nhánh - ThS. Đặng Đình Phương
24 p | 126 | 10
-
Bài giảng Ngôn ngữ lập trình C - Chương 3: Các câu lệnh lặp
9 p | 176 | 8
-
Bài giảng Tin học cơ sở A: Các câu lệnh lặp - Đặng Bình Phương
48 p | 96 | 7
-
Bài giảng Nhập môn lập trình: Câu lệnh lập - ThS. Đặng Đình Phương
29 p | 54 | 7
-
Bài giảng Nhập môn lập trình: Bài 4 - Câu lệnh điều khiển
19 p | 53 | 6
-
Giáo trình mô đun Lập trình cơ bản (Nghề Công nghệ thông tin - Trình độ cao đẳng) – CĐ Kỹ thuật Công nghệ BR–VT
108 p | 54 | 6
-
Bài giảng Kỹ thuật lập trình: Điều khiển lặp - GV. Hà Đại Dương
18 p | 56 | 5
-
Bài giảng Lập trình căn bản - Chương 3: Các câu lệnh đơn trong C
20 p | 72 | 5
-
Bài giảng Lập trình Net với C# - Chương 2: Câu lệnh trong C#
14 p | 93 | 4
-
Bài giảng Kỹ thuật lập trình: Điều khiển lặp (tiếp) - GV. Hà Đại Dương
18 p | 49 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn