Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 160 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
160
Dung lượng
5,11 MB
Nội dung
Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49 Mục lục Mục lục Lời nói đầu Phần Tổng quan lập trình hướng đối tượng 1.1 Abstraction ( tính trừu tượng) 1.2 Encap sulation (sự đóng kín) 1.3 Modularity (modun hóa) 1.4 Hierachy (hệ thống phân cấp) 1.5 Kiểm tra kiểu ( typing ) 1.6 Bản chất đối tượng 1.7 Mối quan hệ đối tượng 1.8 Bản chất lớp 1.9 Mối quan hệ lớp Phần 2.Visual C++ 6.0 2.1.Cách cài đặt 2.2.Giao diện chương trình 2.3.Các thao tác với Menu Toolbar VC++ 6.0 2.4.Các môi trường xây dựng ứng dụng VC++ 6.0 Phần Hướng dẫn lập trình VC++6.0 Chương 1.Các thao tác với lớp, hàm, biến 3.1.1.Đưa file có sẵn vào chương trình ứng dụng 3.1.2.Thêm lớp vào chương trình 3.1.3.Thêm hàm nằm lớp 3.1.4.Cách thêm biến Chương 2.Tạo menu, toolbar thao tác 3.2.1.Tạo Menu 3.2.2.Tạo ToolBar 3.2.3 Tác động kiện lên đối tượng 3.2.4 Đẩy icon lên nút bấm ứng dụng 3.2.5.Tạo ToolTip(chú thích )cho đối tượng 3.2.6.Tác động tới biểu tượng chuột ứng dụng Chương 3.Sử dụng font hệ thống 3.3.1.Lấy font hệ thống viết text thao tác vẽ lên hình 3.3.2.Thiết kế Dialog riêng đưa vào Dialog ,cập nhật hệ thống Chương Đọc, hiển thị lưu file text 3.4.1.Đọc hiển thị nội dung file 3.4.2.Ghi nội dung lên file 3.4.2.1.Ghi nội dung lên file có sẵn 3.4.2.2.Ghi liệu lên file 3.4.3.Ví dụ minh hoạ Chương 5.Sử dụng ActiveX ứng dụng Chương 6.Giao tiếp máy tính 3.6.1.Các hàm VC++ giao tiếp máy tính Hướng dẫn lập trình VC ++ 6.0 6 7 8 10 16 17 19 20 23 25 27 31 33 34 35 36 38 39 45 52 53 53 54 55 66 76 Trang Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49 3.6.1.1.Hàm CreateFile 3.6.1.2.Hàm SetupComm 3.6.1.3.Hàm PurgeComm 3.6.1.4.Cấu trúc DCB 3.6.1.5.Hàm GetCommState 3.6.1.6.Hàm SetCommState 3.6.1.7.Cấu trúc COMSTAT 3.6.1.8.Hàm ReadFile 3.6.1.9.Hàm WriteFile 3.6.2.Giao tiếp máy tính với thiết bị bên ngồi chuẩn giao tiếp RS232 Chương 7.VC++ với thiết kế 3D 3.7.1.Include file header library 3.7.2.Sử dụng hàm PreCreateWindow 3.7.3.Hàm OnCreate 3.7.3.1.Mô tả PixelFormat 3.7.3.2.Chọn thiết lập cho PixelFormat 3.7.3.3.Tạo ngữ cảnh để tơ bóng (Rendering Context ) 3.7.4.Hàm OnSize ( ) 3.7.5.Hàm OnEraseBkgnd 3.7.6.Hàm OnInitialUpdate 3.7.7.Hàm OnDraw(CDC*pDC) 3.7.8.Các hàm DrawScene 3.7.9.Ví dụ minh hoạ Chương Đóng gói chương trình ,tạo cài đặt 3.8.1.Thêm thành phần Installshield for Microsoft Visual C++ 6.0 3.8.2.Các thao tác để đóng gói với InstallShield Chương 9.Thiết kế chương trình mơ điều khiển máy CNC 3.9.1.Chức chương trình 3.9.2.Thiết kế giao diện 3.9.2.1.Thiết kế giao diện 3.9.2.2.Thiết kế hộp thoại phụ 3.9.2.3.Thiết kế menu 3.9.3.Viết code cho chương trình 3.9.3.1.Viết code cho hộp thoại Configure 3.9.3.2.Viết code cho hộp thoại Define Zero Point 3.9.3.3.Viết Code cho hộp thoại Edit Code 3.9.3.4.Viết Code cho hộp thoại New 3.9.3.5.Viết code cho hộp thoại Tool Demension 3.9.3.6.Viết code cho hộp thoại To Any Point 3.9.3.7.Viết code cho chương trình Tài liệu tham khảo Hướng dẫn lập trình VC ++ 6.0 76 78 79 79 83 83 84 85 86 87 101 101 101 101 102 102 102 103 103 103 103 103 109 110 118 119 119 122 127 128 128 129 130 130 131 131 132 159 Trang Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49 LỜI NÓI ĐẦU Trong phát triển ngày lớn mạnh khoa học công nghệ, vấn đề kết hợp lĩnh vực điện tử - tin học khí quan tâm Một đề tài thu hút quan tâm sinh viên khí sử dụng ngơn ngữ lập trình để tạo ứng dụng điều khiển mơ q trình máy móc Một cơng cụ lập trình hiệu đạt kết tốt Visual C++, xây dựng tảng ngôn ngữ lập trình hướng đối tượng C++ Trong đồ án tốt nghiệp với đề tài “Hướng dẫn lập trình VC++ 6.0” trình bày cách thức làm việc hiệu với ngôn ngữ lập trình , kèm theo minh hoạ Nội dung đồ án tốt nghiệp sau : -Phần I : Tổng quan lập trình hướng đối tượng -Phần II : Visual C++ 6.0 -Phần III : Hướng dẫn lập trình +Chương :thao tác với hàm, biến +Chương : tạo menu, toolbar thao tác +Chương : sử dụng Font hệ thống +Chương : đọc, hiển thị lưu file text +Chương : sử dụng Active X để đưa âm vào ứng dụng +Chương : Giao tiếp máy tính +Chương : VC++ với thiết kế 3D +Chương : đóng gói chương trình, tạo cài đặt +Chương : thiết kế mơ chương trình điều khiển, mô gia công máy CNC Do giới hạn mặt thời gian hạn chế mặt kiến thức người viết nên tránh khỏi sai sót mong thơng cảm người đọc Trong q trình hồn thành đề tài ,được hướng dẫn tận tình TS.Bùi Quý Lực , cơng việc hồn thành tiến độ Xin chân thành cảm ơn tới thầy Bùi Quý Lực Người thực : Sinh viên : Lê Văn Đảng Hướng dẫn lập trình VC ++ 6.0 Trang Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49 Phần I: TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Visual C++ mơt phần mềm lập trình hướng đối tượng phát triển sở ngơn ngữ lập trình C C++ Phương pháp thiết kế hướng đối tượng vừa phát triển nhằm giúp nhà phát triển khai thác sức mạnh đối tượng ngơn ngữ lập trình hướng đối tượng, dùng lớp đối tượng khối xây dựng sở OOP (Object Oriented Programming ) ngơn ngữ thực chương trình tổ chức tập hợp đối tượng hợp tác với nhau, đối tượng đại diện cho instance vài lớp lớp mà chúng thành viên lớp phân cấp thông qua quan hệ thừa kế Ba điểm quan trọng định nghĩa : Đối tượng dùng khối xây dựng OOP Mỗi đối tượng instance số lớp Các lớp liên quan với thông qua quan hệ thừa kế Ta nói ngơn ngữ hướng đối tượng thỏa mãn yêu cầu sau: - Nó tạo đối tượng liệu trừu tượng với giao tiếp operation định trạng thái ẩn bên - Những đối tượng có lớp kết hợp - Lớp thừa kế thuộc tính từ lớp cha Một mơ hình mà thiếu đặc tính khơng phải hướng đối tượng 1.1 Abstraction ( tính trừu tượng) : Sự trừu tượng thể đặc tính cốt yếu đối tượng mà đặc tính dùng để phân biệt đối tượng với tất loại đối tượng khác cung cấp cách rõ ràng giới hạn ý niệm ý nghĩa, liên quan đến viễn tượng người nhìn Trừu tượng tập trung vào nhìn bề ngồi đối tượng thỏa mãn hành vi chủ yếu đối tượng riêng biệt từ thực Ta có loại trừu tượng sau: - Thực thể trừu tượng : đối tượng mà đại diện cho mơ hình hữu dụng miền vấn đề hay thực thể miền giải -Operation abstraction (hoạt động trừu tượng ) : đối tượng mà cung cấp tập tổng quát operation, tất operation thực thi loại chức - Máy ảo trừu tượng : đối tượng mà nhóm hoạt động với nhau, tất hoạt động sử dụng mức điều khiển cao Hoặc hoạt động mà chúng sử dụng tập hợp hoạt động mức thấp -Trừu tượng ngẫu nhiên : đối tượng mà đóng gói tập hợp hoạt động mà chúng khơng có quan hệ lẫn Hướng dẫn lập trình VC ++ 6.0 Trang Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49 Một client đối tượng sử dụng nguồn tài nguyên đối tượng khác ( gọi server) Chúng ta biểu thị đặc điểm hành vi đối tượngbằng cách xem xét dịch vụ mà cung cấp cho đối tương khác, hoạt động mà thực thi cho đối tượng khác Quan điểm buộc phải tập trung vào nhìn bề ngồi đối tượng Chúng ta gọi toàn tập hợp hoạt động mà client thi hành cho đối tượng, với câu lệnh hợp lệ mà chúng gọi protocol Một protocol biểu thị cách thức mà đối tượng hành động phản ứng, cấu thành tổng thể bề tĩnh động trừu tượng 1.2 Encap sulation (sự đóng kín) : Tính đóng kín q trình phân chia phần tử trừu tượng để cấu thành nên cấu trúc hành vi nó, đóng kín cho phép hoạt động giao tiếp trừu tượng thực Sự đóng kín chế liên kết mã liệu mà thao tác, giữ cho an toàn khỏi can thiệp từ bên sử dụng sai Trong ngôn ngữ hướng đối tượng, mã liệu liên kết với để tạo thành “hộp đen” độc lập Trong hộp tất mã data cần thiết Khi mã data liên kết với đối tượng tạo Nói cách khác, đối tượng dụng cụ hỗ trợ cho đóng kín Trong đối tượng , mã, data, private (riêng) đối tượng hay public (chung) Mã data riêng thuộc đối tượng truy cập với phận đối tượng Nghĩa mã data riêng truy cập phần khác chương trình tồn ngồi đối tượng Khi data chung, phận khác truy cập đến nó định nghĩa đối tượng Các phần chung đối tượng dùng để cung cấp giao diện có điều khiển cho phần riêng đối tượng Nói chung, đối tượng biến thuộc kiểu người sử dụng định nghĩa Mỗi lần ta định nghĩa đối tượng mới, ta tạo loại data Tính trừu tượng đóng kín hai khái niệm : trừu tượng tập trung vào hành vi quan sát đối tượng, cịn tính đóng kín tập trung vào thực hành vi Tính đóng kín thường đạt thơng qua che dấu thơng tin, tức q trình che dấu bí mật đối tượng mà khơng đóng góp vào đặc tính thiết yếu đối tượng ,thơng thường cấu trúc đối tượng che dấu thực method đối tượng Đặc biệt thành viên đặt vào public, private, hay protected lớp Thành viên khai báo public thấy client, thành viên khai báo private hồn tồn đóng kín, thành viên khai báo protected thấy với lớp lớp C++ cịn cho phép kí hiệu friend : lớp hợp tác phép thấy phần privated Hướng dẫn lập trình VC ++ 6.0 Trang Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49 1.3 Modularity (modun hóa) : Modularity tính chất hệ thống phân tích thành tập hợp dính kết ghép lại cách lỏng lẻo thành modun Việc phân chia chương trình thành phần riêng lẻ làm giảm độ phức tạp Ở ngôn ngữ lớp, đối tượng hình thành cấu trúc luận lý hệ thống Chúng ta đặt trừu tượng modun để tạo kiến trúc vật lý hệ thống Đối với vấn đề nhỏ, nhà phát triển định vấn đề khai báo tất lớp đối tượng gói Ta thường nhóm lớp vàø đối tượng có quan hệ modun, phơi bày phần tử mà modun khác cần thấy Trong hệ thống lớn, có q nhiều modun thật khó cho người sử dụng tìm thấy lớp mà họ cần Hơn , định thay đổi hàng trăm modun phải hiệu chỉnh biên dịch lại Như vậy, modun hóa đơi khơng tốt Modun phục vụ phần tử đơn vị phân chia phần mềm mà sử dụng lại qua ứng dụng Nhà phát triển chọn cách đóng gói đối tượng thành modun cho chúng thuận tiện để sử dụng lại 1.4 Hierachy (hệ thống phân cấp) : Hệ thống phân cấp xếp theo thứ bậc hay đặt trừu tượng Có hai phân cấp quan trọng hệ thống phức tạp : cấu trúc lớp nó(phân cấp “is a”), cấu trúc đối tượng ( phân cấp “part of “) Thừa kế đơn giản: thừa kế mối quan hệ “ is a “ thừa kế định nghĩa mối quan hệ lớp, lớp chia sẻ cấu trúc hành vi định nghĩa lớp hay nhiều lớp ( tương ứng với thừa kế đơn giản đa thừa kế ) Do thừa kế phân cấp trừu tượng, lớp thừa kế hay nhiều lớp cha Đa thừa kế đưa đến số vấn đề phức tạp cho ngơn ngữ lập trình Những ngơn ngữ phải đưa hai vấn đề: xung đột tên lớp cha khác nhau, thừa kế lập lại nhiều lần Sự xung đột xảy hai hay nhiều lớp cha cấp chia sẻ lớp cha chung Và trường hợp vậy, lớp có nhiều cấu trúc lớp cha dùng chung Một số ngơn ngữ không cho phép thừa kế lập lại, số khác chọn hướng khác C++ cho phép người lập trình định: virtual base class (lớp sở ảo ) dùng để dùng chung cấu trúc lập lại, nonvirtual base class có kết trùng lớp 1.5 Kiểm tra kiểu ( typing ) : Typing tuân theo bắt buộc lớp đối tượng, đối tượng lớp khác không thay lẫn chúng thay lẫn theo cách thức hạn chế C++ có khuynh hướng kiểm tra kiểu chặt chẽ ta lờ hay cấm kiểm tra - Tính đa dạng (polymorphism): Là tính chất cho phép tên dùng cho hai nhiều mục đích khác có quan hệ phương diện kỹ thuật Mục đích tính đa dạng áp dụng cho OOP cho phép tên dùng để rõ lớp tác động tổng quát, tác động cụ thể xác định loại data Ví dụ, C, khơng có hỗ trợ tính đa dạng nên tác động giá trị tuyệt đối cần phải có ba hàm khác nhau:abs(), labs(), Hướng dẫn lập trình VC ++ 6.0 Trang Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49 fabs( ) Các hàm tính tốn trả giá trị tuyệt đối số nguyên, số nguyên dài, giá trị dấu phẩy động Tuy nhiên, C++ có đặc tính đa dạng nên có hàm abs() Loại data dùng để gọi hàm xác định loại hàm thực dùng Trong C++ sử dụng tên hàm cho nhiều mục đích khác Điều gọi tải hàm(function overloading) Tổng quan khái niệm tính đa dạng ý tưởng “một giao diện, nhiều phương pháp” Điều có nghĩa thiết kế giao diện chung cho nhóm tác động có liên quan Tuy nhiên, tác động cụ thể thi hành phụ thuộc vào data Ưu điểm tính đa dạng chúng làm giảm tính phức tạp cách cho phép giao diện sử dụng để ghi rõ lớp tác động tổng qt, trình biên dịch lựa chọn tác động cụ thể áp dụng cho trường hợp Là người lập trình ta khơng phải thực lựa chọn tay Ta cần nhớ sử dụng giao diện chung -Liên kết tĩnh kiên kết động (Static and Dynamic Binding): Khái niệm typing static typing liên kết tĩnh hoàn toàn khác Strong typing đề cập tới quán kiểu Stactic binding có nghĩa kiểu biến biểu thức cố định vào lúc biên dịch Dynamic binding nghĩa kiểu biến biểu thức không cho biết chạy chương trình Bởi Strong typing Dynamic binding khái niệm độc lập ngơn ngữ vừa Strong Static typing 1.6 Bản chất đối tượng: Một đối tượng có trạng thái, hành vi, đặc tính nhân dạng; cấu trúc hành vi đối tượng giống định nghĩa lớp chung chúng, thuật ngữ instance đối tượng thay lẫn - Trạng thái (state) : đối tượng bao gồm tất đặc tính (thường tĩnh) đối tượng trừ giá trị ( thường động ) đặc tính -Hành vi (behavior ) : đối tượng hoạt động phản ứng theo điều kiện trạng thái thay đổi message truyền đến -Operations (hoạt động) : dịch vụ mà lớp cung cấp cho khách hàng Chúng ta thấy client thường thực thi năm loại opearation đối tượng Ba loại operation thơng thường : • Modifier : operation thay đổi trạng thái đối tượng Selector: Operation truy xuất trạng thái đối tượng khơng làm thay đổi trạng thái • Iterrator : operation cho phép tất phần đối tượng truy xuất theo thứ tự định nghĩa trước Hai loại operation thông dụng khác cần thiết để tạo hủy instance lớp : • Constructor :là operation tạo đối tượng (hoặc) khởi động trạng thái • Destructor :là operation giải phóng trạng thái đối tượng (hoặc) hủy đối tượng • Indentify(đặc điểm nhận dạng) : indentify đặc tính đối tượng để phân biệt với đối tượng khác 1.7 Mối quan hệ đối tượng -Links( liên kết) : Link nối kết vật lý hay ý niệm đối tượng Một đối tượng cộng tác với đối tượng khác thông qua link tới đối tượng Hay nói cách khác, link vó nghĩa hợp tác cụ thể qua đối tượng ( client) Hướng dẫn lập trình VC ++ 6.0 Trang Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49 áp dụng dịch vụ đối tượng khác (nhà cung cấp) qua đối tượng điều khiển đối tượng khác - Một đối tượng đóng vai trị sau: • Actor : đối tượng làm việc đối tượng khác khơng cho đối tượng khác làm việc nó, thuật ngữ actor active object thay lẫn • Server :một đối tượng không làm việc đối tượng khác, cho đối tượng khác làm việc • Agent : đối tượng vừa làm việc đối tượng khác vừa cho đối tượng khác làm việc nó, đại lý thường tạo để làm công việc cho actor hay agent khác • Đối tượng cung cấp global client • Đối tượng cung cấp tham số cho operation client • Đối tượng cung cấp phần đối tượng client • Đối tượng cung cấp khai báo cục operation client Khi có multiple thread control, việc truyền thông tin đối tượng cần xử lý vấn đề multual exclusion hệ thống xử lý đồng thời Vấn đề đồng hóa phải xem xét -Aggregation : Aggregation có nghĩa phân cấp tổng thể / phận, với khả điều khiển từ tổng thể ( gọi aggregate ) tới phận (được hiểu thuộc tính nó) 1.8 Bản chất lớp: -Class (lớp) : tập hợp đối tượng có cấu trúc chung hay hành vi chung Một đối tượng đơn giản instance lớp -Interface: lớp cho thấy bên ngồi đối tượng nhấn mạnh đến vấn đề trừu tượng che dấu cấu tr1c hành vi bên - Implemention : mơt lớp nhìn bên Implemention lớp bao gồm tât operation định nghĩa interface Chúng ta chia interface lớp thành ba phần: • Public : khai báo truy xuất đến client • Protected : khai báo truy xuất lớp đó, lớp nó, lớp friend • Private: khai báo truy xuất lớp lớp friend 1.9 Mối quan hệ lớp: Phần lớn ngôn ngữ hướng đối tượng hỗ trợ trực tiếp vài kết hợp quan hệ sau đây: • Association : gồm có quan hệ một-một, một-nhiều, nhiều-nhiều • Inheritance (thừa kế) : lớp chia cấu trúc (hoặc) hành vi định nghĩa lớp (đơn thừa kế) nhiều lớp (đa thừa kế) • Aggregation (kết tập) : quan hệ kết tập lớp giống quan hệ kết tập đối tượng tượng lớp Đa thừa kế thường bị lẫn lộn với kết tập Trong C++ thừa kế protected hay private dễ dàng bị thay kết tập protected hay private instace lớp cha, mà khơng tính ngữ nghĩa Hướng dẫn lập trình VC ++ 6.0 Trang Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49 Phần VISUAL C++ 6.0 2.1.Cách cài đặt Visual C++ 6.0 nằm Visual Studio,là phần mềm hỗ trợ lập trình Windows hãng Microsoft sáng chế Cách cài đặt phần mềm Visual Studio 6.0 Enterpise Edition sau : Có thể copy đĩa vào máy kích hoạt file Setup.exe để cài đặt chương trình, chương trình tự khởi động lên cửa sổ cài đặt hình : Hình 2.1 – Nhấn Next để tự động cài đặt Visual Studio 6.0 Hệ thống tự động cài đặt Java Virtual Machine Hình 2.2 – Chương trình giải nén files cài đặt Microsoft VM Hướng dẫn lập trình VC ++ 6.0 Trang Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49 Hình 2.3- Chương trình yêu cầu khởi động lại máy để cài đặt có hiệu lực, nhấn Yes để khởi động lại máy Sau hoàn tất cài đặt Microsoft VM (Java Virtual Machine), tiếp tục cài đặt Visual Studio 6.0 Hình 2.4 – Nhấn Next để cài đặt Visual Studio 6.0 cửa sổ cài đăt Hướng dẫn lập trình VC ++ 6.0 Trang 10 Đồ án tốt nghiệp OnOK( ); Lê Văn Đảng - Cơ Điện tử 4- k49 } } Viết code cho tác vụ menu Action -Configure : void CCNCControllerDlg::OnToolConfigure( ) { KillTimer(ID_CLOCK_RIGHT); KillTimer(ID_CLOCK_UP); KillTimer(ID_CLOCK_DOWN); KillTimer(ID_CLOCK_DOWNRIGHT); KillTimer(ID_CLOCK_DOWNLEFT); KillTimer(ID_CLOCK_UPLEFT); KillTimer(ID_CLOCK_UPRIGHT); KillTimer(ID_CLOCK_ANYPOINT); KillTimer(ID_CLOCK_LEFT); CConfigureDlg dlg; // Mở hộp thoại Configure lưu thông số vào biến buffer if(dlg.DoModal()==IDOK) { bufferxc=dlg.m_ConfigureStepX; bufferyc=dlg.m_ConfigureStepY; bufferzc=dlg.m_ConfigureStepZ; bufferVelocity=dlg.m_ConfigureVelocity; UpdateData(FALSE); } } Các ID_CLOCK_ muốn sử dụng phải khai báo cách tìm đến menu View cửa sổ VC ++ > ID= Resource Symbols >New đặt tên ID hàm Với Action –Stop : void CCNCControllerDlg::OnToolStop( ) { //Tắt định thời để dừng mô KillTimer(ID_CLOCK_RIGHT); KillTimer(ID_CLOCK_DOWN); KillTimer(ID_CLOCK_LEFT); KillTimer(ID_CLOCK_DOWNRIGHT); KillTimer(ID_CLOCK_DOWNLEFT); KillTimer(ID_CLOCK_UPLEFT); KillTimer(ID_CLOCK_UPRIGHT); KillTimer(ID_CLOCK_UP); KillTimer(ID_CLOCK_ANYPOINT); // Làm vô hiệu lực nút bấm nhờ hàm SetLocked( TRUE) hàm //lớp quản lý Active X Command Button m_Up.SetLocked(TRUE); Hướng dẫn lập trình VC ++ 6.0 Trang 146 Đồ án tốt nghiệp m_Down.SetLocked(TRUE); Lê Văn Đảng - Cơ Điện tử 4- k49 m_Left.SetLocked(TRUE); m_Right.SetLocked(TRUE); m_UpLeft.SetLocked(TRUE); m_UpRight.SetLocked(TRUE); m_Down.SetLocked(TRUE); m_DownLeft.SetLocked(TRUE); m_DownRight.SetLocked(TRUE); m_Zero.SetLocked(TRUE); m_UpZ.SetLocked(TRUE); m_DownZ.SetLocked(TRUE); m_Center.SetLocked(TRUE); m_Reset.SetLocked(TRUE); m_Configure.SetLocked(TRUE); UpdateData(FALSE); } Với Action –Run : void CCNCControllerDlg::OnToolRun( ) { //Làm nút bấm điều khiển có hiệu lực m_Up.SetLocked(FALSE); m_Down.SetLocked(FALSE); m_Left.SetLocked(FALSE); m_Right.SetLocked(FALSE); m_UpLeft.SetLocked(FALSE); m_UpRight.SetLocked(FALSE); m_Down.SetLocked(FALSE); m_DownLeft.SetLocked(FALSE); m_DownRight.SetLocked(FALSE); m_DownZ.SetLocked(FALSE); m_UpZ.SetLocked(FALSE); m_Center.SetLocked(FALSE); m_Reset.SetLocked(FALSE); m_Configure.SetLocked(FALSE); m_Zero.SetLocked(FALSE); m_Stop.SetLocked(FALSE); UpdateData(FALSE); } Viết code cho nút bấm lại : Ở để mô ứng với điều khiển theo nút bấm , dùng tới cài đặt thời gian, với điều khiển tương ứng với cài đặt thời gian, ấn nút điều khiển tương ứng với việc ngắt cài đặt thời gian khác mở cài đặt thời gian thân Hướng dẫn lập trình VC ++ 6.0 Trang 147 Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49 void CCNCControllerDlg::OnClickCommandOpen( ) { OnFileOpen( ); } void CCNCControllerDlg::OnClickCommandEditCode( ) { OnFileEditCode( ); } void CCNCControllerDlg::OnClickCommandNew( ) { OnFileNew( ); } void CCNCControllerDlg::OnClickCommandSave( ) { OnFileSave( ); } void CCNCControllerDlg::OnClickCommandSaveAs( ) { OnFileSaveAs( ); } void CCNCControllerDlg::OnClickCommandConfigure( ) { OnToolConfigure( ); } void CCNCControllerDlg::OnClickCommandRun( ) { OnToolRun( ); } void CCNCControllerDlg::OnClickCommandStop( ) { OnToolStop( ); } void CCNCControllerDlg::OnClickCommandUpright( ) { KillTimer(ID_CLOCK_RIGHT); KillTimer(ID_CLOCK_DOWN); KillTimer(ID_CLOCK_LEFT); KillTimer(ID_CLOCK_DOWNRIGHT); KillTimer(ID_CLOCK_DOWNLEFT); KillTimer(ID_CLOCK_UPLEFT); KillTimer(ID_CLOCK_UPRIGHT); SetTimer(ID_CLOCK_UPRIGHT,300,NULL); KillTimer(ID_CLOCK_ANYPOINT); Hướng dẫn lập trình VC ++ 6.0 Trang 148 Đồ án tốt nghiệp } Lê Văn Đảng - Cơ Điện tử 4- k49 void CCNCControllerDlg::OnClickCommandUpleft( ) { KillTimer(ID_CLOCK_RIGHT); KillTimer(ID_CLOCK_DOWN); KillTimer(ID_CLOCK_LEFT); KillTimer(ID_CLOCK_DOWNRIGHT); KillTimer(ID_CLOCK_DOWNLEFT); KillTimer(ID_CLOCK_UPLEFT); KillTimer(ID_CLOCK_UPRIGHT); KillTimer(ID_CLOCK_ANYPOINT); SetTimer(ID_CLOCK_UPLEFT,300,NULL); } void CCNCControllerDlg::OnClickCommandUp( ) { KillTimer(ID_CLOCK_RIGHT); KillTimer(ID_CLOCK_DOWN); KillTimer(ID_CLOCK_LEFT); KillTimer(ID_CLOCK_DOWNRIGHT); KillTimer(ID_CLOCK_DOWNLEFT); KillTimer(ID_CLOCK_UPLEFT); KillTimer(ID_CLOCK_UPRIGHT); KillTimer(ID_CLOCK_ANYPOINT); SetTimer(ID_CLOCK_UP,300,NULL); UpdateData(FALSE); } void CCNCControllerDlg::OnClickCommandRight( ) { KillTimer(ID_CLOCK_UP); KillTimer(ID_CLOCK_DOWN); KillTimer(ID_CLOCK_LEFT); KillTimer(ID_CLOCK_DOWNRIGHT); KillTimer(ID_CLOCK_DOWNLEFT); KillTimer(ID_CLOCK_UPLEFT); KillTimer(ID_CLOCK_UPRIGHT); KillTimer(ID_CLOCK_ANYPOINT); SetTimer(ID_CLOCK_RIGHT,300,NULL); } void CCNCControllerDlg::OnClickCommandLeft( ) { KillTimer(ID_CLOCK_UP); KillTimer(ID_CLOCK_DOWN); KillTimer(ID_CLOCK_RIGHT); KillTimer(ID_CLOCK_DOWNRIGHT); KillTimer(ID_CLOCK_DOWNLEFT); Hướng dẫn lập trình VC ++ 6.0 Trang 149 Đồ án tốt nghiệp Lê Văn Đảng - Cơ Điện tử 4- k49 KillTimer(ID_CLOCK_UPLEFT); KillTimer(ID_CLOCK_UPRIGHT); KillTimer(ID_CLOCK_ANYPOINT); SetTimer(ID_CLOCK_LEFT,300,NULL); } void CCNCControllerDlg::OnClickCommandDownright( ) { KillTimer(ID_CLOCK_UP); KillTimer(ID_CLOCK_RIGHT); KillTimer(ID_CLOCK_LEFT); KillTimer(ID_CLOCK_DOWNLEFT); KillTimer(ID_CLOCK_UPLEFT); KillTimer(ID_CLOCK_UPRIGHT); KillTimer(ID_CLOCK_ANYPOINT); KillTimer(ID_CLOCK_DOWN); SetTimer(ID_CLOCK_DOWNRIGHT,300,NULL); } void CCNCControllerDlg::OnClickCommandDownleft( ) { KillTimer(ID_CLOCK_UP); KillTimer(ID_CLOCK_RIGHT); KillTimer(ID_CLOCK_LEFT); KillTimer(ID_CLOCK_DOWNRIGHT); KillTimer(ID_CLOCK_UPLEFT); KillTimer(ID_CLOCK_UPRIGHT); KillTimer(ID_CLOCK_DOWNLEFT); KillTimer(ID_CLOCK_DOWN); SetTimer(ID_CLOCK_DOWNLEFT,300,NULL); } void CCNCControllerDlg::OnClickCommandDown( ) { KillTimer(ID_CLOCK_UP); KillTimer(ID_CLOCK_RIGHT); KillTimer(ID_CLOCK_LEFT); KillTimer(ID_CLOCK_DOWNRIGHT); KillTimer(ID_CLOCK_DOWNLEFT); KillTimer(ID_CLOCK_UPLEFT); KillTimer(ID_CLOCK_UPRIGHT); KillTimer(ID_CLOCK_ANYPOINT); SetTimer(ID_CLOCK_DOWN,300,NULL); } void CCNCControllerDlg::OnClickCommandCenter( ) { Hướng dẫn lập trình VC ++ 6.0 Trang 150 Đồ án tốt nghiệp KillTimer(ID_CLOCK_RIGHT); Lê Văn Đảng - Cơ Điện tử 4- k49 KillTimer(ID_CLOCK_UP); KillTimer(ID_CLOCK_DOWN); KillTimer(ID_CLOCK_LEFT); KillTimer(ID_CLOCK_DOWNRIGHT); KillTimer(ID_CLOCK_DOWNLEFT); KillTimer(ID_CLOCK_UPLEFT); KillTimer(ID_CLOCK_UPRIGHT); KillTimer(ID_CLOCK_ANYPOINT); } Với nút bấm SetTool :sẽ thực công việc ngừng việc mô thời mở hộp thoại Tool Demension ,kiểm tra giá trị nhập vào vượt giới hạn hiển thị thông báo, không vi phạm lấy thông số để nạp vào chương trình void CCNCControllerDlg::OnClickCommandSetTool( ) { // Cập nhật liệu lên hình UpdateData(TRUE); // Dừng mơ KillTimer(ID_CLOCK_RIGHT); KillTimer(ID_CLOCK_UP); KillTimer(ID_CLOCK_DOWN); KillTimer(ID_CLOCK_LEFT); KillTimer(ID_CLOCK_DOWNRIGHT); KillTimer(ID_CLOCK_DOWNLEFT); KillTimer(ID_CLOCK_UPLEFT); KillTimer(ID_CLOCK_UPRIGHT); KillTimer(ID_CLOCK_ANYPOINT); // Mở hộp thoại CSetToolDlg dlg; if (dlg.DoModal( )==IDOK) { if((1