intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Kun | Ngày: | Loại File: PDF | Số trang:25

338
lượt xem
73
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: Các câu lệnh trong lập trình c trên win

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2