1. Trang chủ
  2. » Luận Văn - Báo Cáo

Hướng dẫn lập trình VC 6++

160 734 3
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 160
Dung lượng 6,04 MB

Nội dung

Hướng dẫn lập trình VC 6++

Trang 1

Mục lục

Phần 1 Tổng quan về lập trình hướng đối tượng

Phần 2.Visual C++ 6.0

2.3.Các thao tác cơ bản với Menu và Toolbar của VC++ 6.0 172.4.Các môi trường xây dựng ứng dụng trong VC++ 6.0 19

Phần 3 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 các file có sẵn vào trong chương trình ứng dụng 20

Chương 2.Tạo các menu, toolbar và các thao tác cơ bản

3.2.4 Đẩy một icon lên nút bấm trong ứng dụng 353.2.5.Tạo các ToolTip(chú thích )cho đối tượng 363.2.6.Tác động tới biểu tượng chuột trong ứng dụng 38

Chương 3.Sử dụng font và giờ hệ thống

3.3.1.Lấy font hệ thống viết text và thao tác vẽ lên màn hình 393.3.2.Thiết kế một Dialog riêng đưa nó vào Dialog chính ,cập nhật giờ

Chương 4 Đọc, hiển thị và lưu file text

Chương 6.Giao tiếp máy tính

3.6.1.Các hàm trong VC++ trong giao tiếp máy tính 76

Trang 2

Chương 7.VC++ với thiết kế 3D

3.7.3.3.Tạo một ngữ cảnh để tô bóng (Rendering Context ) 102

Chương 8 Đóng gói chương trình ,tạo bộ cài đặt

3.8.1.Thêm thành phần Installshield for Microsoft Visual C++ 6.0 1093.8.2.Các thao tác để đóng gói với InstallShield 110

Chương 9.Thiết kế chương trình mô phỏng điều khiển máy CNC

3.9.3.2.Viết code cho hộp thoại Define Zero Point 129

3.9.3.5.Viết code cho hộp thoại Tool Demension 1313.9.3.6.Viết code cho hộp thoại To Any Point 131

Trang 3

LỜI NÓI ĐẦU

Trong sự phát triển ngày càng lớn mạnh của khoa học công nghệ, vấn đề kết hợpcác lĩnh vực điện tử - tin học và cơ khí đang rất được quan tâm Một trong những đềtài thu hút được sự quan tâm của các sinh viên cơ khí đó là sử dụng ngôn ngữ lập trìnhđể tạo ra các ứng dụng điều khiển và mô phỏng quá trình của máy móc Một trongnhững công cụ lập trình hiệu quả và đạt kết quả tốt đó chính là Visual C++, được xâydựng trên nền tảng là ngôn ngữ lập trình hướng đối tượng C++

Trong bản đồ án tốt nghiệp với đề tài là “Hướng dẫn lập trình VC++ 6.0” sẽ trìnhbày những cách thức làm việc hiệu quả và cơ bản với ngôn ngữ lập trình này , kèmtheo đó là các bài minh hoạ

Nội dung của đồ án tốt nghiệp như sau :

-Phần I : Tổng quan về 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 1 :thao tác với các hàm, biến

+Chương 2 : tạo menu, toolbar và các thao tác cơ bản +Chương 3 : sử dụng Font và giờ hệ thống

+Chương 4 : đọc, hiển thị và lưu file text

+Chương 5 : sử dụng Active X để đưa âm thanh vào trong ứng dụng +Chương 6 : Giao tiếp máy tính

+Chương 7 : VC++ với thiết kế 3D

+Chương 8 :đóng gói chương trình, tạo bộ cài đặt

+Chương 9 : thiết kế mô phỏng chương trình điều khiển, mô phỏng gia công máy CNC.

Do giới hạn về mặt thời gian cũng như những hạn chế về mặt kiến thức của người viếtnên không thể tránh khỏi những sai sót vì vậy rất mong được sự thông cảm của ngườiđọc

Trong quá trình hoàn thành đề tài ,được sự hướng dẫn tận tình của TS.Bùi Quý Lực ,công việc đã được hoàn thành đúng tiến độ

Xin chân thành cảm ơn tới thầy Bùi Quý Lực

Người thực hiện :

Sinh viên : Lê Văn Đảng

Trang 4

Phần I: TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

OOP (Object Oriented Programming ) là ngôn ngữ hiện thực trong đó chương trìnhđược tổ chức như tập hợp những đối tượng hợp tác với nhau, mỗi đối tượng đại diệncho một instance của một vài lớp và những lớp mà chúng là thành viên của một lớpphân cấp thông qua quan hệ thừa kế.

Ba điểm quan trọng trong định nghĩa này là :

1 Đối tượng được dùng như là những khối xây dựng cơ bản của OOP.2 Mỗi đối tượng như là một instance của một số lớp.

3 Các lớp liên quan với nhau thông qua quan hệ thừa kế.

Ta có thể nói một ngôn ngữ là hướng đối tượng nếu và chỉ nếu nó thỏa mãn những yêucầu sau:

- Nó có thể tạo ra những đối tượng là dữ liệu trừu tượng với một giao tiếp của nhữngoperation đã định và một trạng thái ẩn bên trong.

- Những đối tượng có một lớp kết hợp.- Lớp có thể thừa kế thuộc tính từ lớp cha.

Một mô hình mà thiếu một trong những đặc tính trên thì không phải là hướng đốitượng.

1.1 Abstraction ( tính trừu tượng) :

Sự trừu tượng thể hiện những đặc tính cốt yếu của một đối tượng mà những đặc tínhnày dùng để phân biệt đối tượng này với tất cả các loại đối tượng khác và do vậy cungcấp một cách rõ ràng giới hạn ý niệm được ý nghĩa, liên quan đến viễn tượng củangười nhìn.

Trừu tượng tập trung vào cái nhìn bề ngoài của đối tượng và do đó thỏa mãn được cáchành vi chủ yếu của đối tượng riêng biệt từ hiện thực của nó.

Ta có thể có các loại trừu tượng sau:

- Thực thể trừu tượng : một đối tượng mà nó đại diện cho một mô hình hữu dụng của

một miền vấn đề hay thực thể miền giải quyết.

-Operation abstraction (hoạt động trừu tượng ) : một đối tượng mà nó cung cấp một

tập tổng quát của các operation, tất cả các operation thực thi cùng một loại chức năng.

- Máy ảo trừu tượng : một đối tượng mà nó nhóm các hoạt động với nhau, và tất cả

các hoạt động này được sử dụng bởi mức điều khiển cao hơn Hoặc các hoạt động màchúng sử dụng tập hợp các hoạt động của mức thấp hơn.

-Trừu tượng ngẫu nhiên : một đối tượng mà nó đóng gói một tập hợp các hoạt động

mà chúng không có quan hệ lẫn nhau.

Trang 5

Một client là bất kì đối tượng nào sử dụng nguồn tài nguyên của đối tượng khác ( gọilà server) Chúng ta có thể biểu thị đặc điểm hành vi của đối tượngbằng cách xem xétnhững dịch vụ mà nó cung cấp cho những đối tương khác, cũng như những hoạt độngmà nó có thể thực thi cho đối tượng khác Quan điểm này buộc chúng ta phải tập trungvào cái nhìn bề ngoài của đối tượng.

Chúng ta gọi toàn bộ tập hợp của các hoạt động mà một client có thể thi hành cho mộtđối tượng, cùng với những câu lệnh hợp lệ mà chúng có thể được gọi là protocol Mộtprotocol biểu thị những cách thức mà một đối tượng có thể hành động và phản ứng, vàdo vậy có thể cấu thành tổng thể bề ngoài tĩnh và động của trừu tượng.

1.2 Encap sulation (sự đóng kín) :

Tính đóng kín là quá trình phân chia các phần tử của một trừu tượng để cấu thành nêncấu trúc và hành vi của chính nó, đóng kín cho phép hoạt động giao tiếp của một trừutượng và hiện thực của nó.

Sự đóng kín là cơ chế liên kết mã và dữ liệu mà nó thao tác, và giữ cho cả 2 được antoàn khỏi sự can thiệp từ bên ngoài và do sử dụng sai Trong ngôn ngữ hướng đốitượng, mã và dữ liệu liên kết với nhau để tạo thành một “hộp đen” độc lập Trong hộpnày là tất cả mã và data cần thiết Khi mã và data liên kết với nhau như thế một đốitượng sẽ được tạo ra Nói cách khác, đối tượng là một dụng cụ hỗ trợ cho sự đóng kín.Trong một đối tượng , mã, data, hoặc cả 2 có thể là private (riêng) của đối tượng đóhay public (chung) Mã hoặc data riêng là thuộc về đối tượng đó và chỉ được truy cậpvới bộ phận của đối tượng Nghĩa là mã hoặc data riêng không thể truy cập bởi cácphần khác của chương trình tồn tại ngoài đối tượng Khi data là chung, các bộ phậnkhác có thể truy cập đến nó mặc dù nó được định nghĩa trong một đối tượng Các phầnchung của một đối tượng dùng để cung cấp một giao diện có điều khiển cho các phầnriêng của đối tượng.

Nói chung, một đối tượng là một biến thuộc kiểu do người sử dụng định nghĩa Mỗilần ta định nghĩa một đối tượng mới, ta tạo ra một loại data mới.

Tính trừu tượng và đóng kín là hai khái niệm : trừu tượng thì tập trung vào những hànhvi có thể quan sát được của đối tượng, còn tính đóng kín tập trung vào hiện thực củahành vi đó Tính đóng kín thường đạt được thông qua che dấu thông tin, tức là quátrình che dấu mọi bí mật của đối tượng mà không đóng góp vào đặc tính thiết yếu củađối tượng đó ,thông thường cấu trúc của đối tượng được che dấu cũng như hiện thựccủa những method của đối tượng.

Đặc biệt các thành viên có thể được đặt vào public, private, hay protected

của lớp Thành viên được khai báo là public thì thấy được đối với mọi client, nhữngthành viên khai báo là private thì hoàn toàn đóng kín, và những thành viên khai báo làprotected thì chỉ thấy với chính lớp của nó và những lớp con của nó C++ cũng còncho phép kí hiệu friend : là lớp cùng hợp tác được phép thấy những phần privated củanhau.

Trang 6

1.3 Modularity (modun hóa) :

Modularity là tính chất của một hệ thống đã được phân tích thành một tập hợp dính kếtvà ghép lại một cách lỏng lẻo thành những modun.

Việc phân chia chương trình thành những phần riêng lẻ có thể làm giảm độ phức tạp.Ở ngôn ngữ này lớp, đối tượng hình thành cấu trúc luận lý của hệ thống Chúng ta đặtnhững trừu tượng này trong modun để tạo ra những kiến trúc vật lý của hệ thống.Đối với những vấn đề nhỏ, nhà phát triển có thể quyết định vấn đề khai báo tất cả cáclớp và đối tượng trong cùng một gói Ta thường nhóm những lớp vàø đối tượng cóquan hệ trong cùng một modun, và chỉ phơi bày những phần tử mà modun khác cầnthấy Trong các hệ thống lớn, thì nó có quá nhiều modun và thật là khó cho người sửdụng tìm thấy những lớp mà họ cần Hơn nữa , khi quyết định thay đổi hàng trămmodun phải được hiệu chỉnh hoặc biên dịch lại Như vậy, modun hóa đôi khi cũngkhông tốt

Modun phục vụ như là những phần tử và những đơn vị không thể phân chia được củaphần mềm mà có thể sử dụng lại được qua các ứng dụng Nhà phát triển sẽ chọn cáchđóng gói đối tượng thành các modun sao 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 là một sự sắp xếp theo thứ bậc hay sắp đặt các trừu tượng Có haiphân cấp quan trọng nhất trong một hệ thống phức tạp là : cấu trúc lớp của nó(phâncấp “is a”), và cấu trúc đối tượng của nó ( phân cấp “part of “).

Thừa kế đơn giản: thừa kế là mối quan hệ “ is a “ thừa kế định nghĩa một mối quan hệgiữa các lớp, trong đó một lớp chia sẻ cấu trúc và hành vi đã được định nghĩa trongmột lớp hay nhiều lớp ( tương ứng với thừa kế đơn giản và đa thừa kế ) Do đó thừa kếnhư là sự phân cấp của các trừu tượng, trong đó một lớp con thừa kế một hay nhiềulớp cha.

Đa thừa kế đưa đến một số vấn đề phức tạp cho ngôn ngữ lập trình Những ngôn ngữphải đưa ra hai vấn đề: xung đột giữa tên của các lớp cha khác nhau, và thừa kế đượclập lại nhiều lần Sự xung đột xảy ra khi hai hay nhiều lớp cha cùng cấp cùng chia sẻmột lớp cha chung Và trong trường hợp như vậy, lớp lá có một hoặc nhiều bản saocấu trúc của lớp cha được dùng chung đó Một số ngôn ngữ thì không cho phép thừakế lập lại, một số khác thì chọn hướng khác C++ cho phép người lập trình quyết định:virtual base class (lớp cơ sở ảo ) được dùng để chỉ ra sự dùng chung của cấu trúc lậplại, trong khi đó nonvirtual base class có kết quả là trùng bản sao ở lớp con.

1.5 Kiểm tra kiểu ( typing ) :

Typing là sự tuân theo bắt buộc của lớp đối tượng, như là những đối tượng của các lớpkhác nhau không được thay thế lẫn nhau hoặc chúng có thể thay thế lẫn nhau chỉ theomột cách thức rất hạn chế.

C++ có khuynh hướng kiểm tra kiểu chặt chẽ nhưng ta có thể lờ đi hay cấm kiểm tra.

- Tính đa dạng (polymorphism):

Là tính chất cho phép một tên được dùng cho hai hoặc nhiều mục đích khác nhau cóquan hệ về phương diện kỹ thuật Mục đích của tính đa dạng khi được áp dụng choOOP là cho phép một tên được dùng để chỉ rõ một lớp tác động tổng quát, một tác động cụ thể được xác định bởi loại data Ví dụ, trong C, không có hỗ trợ tính đa dạngnên một tác động giá trị tuyệt đối cần phải có ba hàm khác nhau:abs(), labs(), và

Trang 7

fabs( ) Các hàm này tính toán và lần lượt trả về một giá trị tuyệt đối của số nguyên,một số nguyên dài, một giá trị dấu phẩy động Tuy nhiên, trong C++ có đặc tính đadạng nên có hàm abs() Loại data được dùng để gọi hàm xác định loại hàm nào thực sựđược dùng Trong C++ có thể sử dụng một tên hàm cho nhiều mục đích khác nhau.Điều này được gọi là quá tải hàm(function overloading).

Tổng quan hơn khái niệm tính đa dạng là ý tưởng “một giao diện, nhiều phươngpháp” Điều này có nghĩa là có thể thiết kế một giao diện chung cho một nhóm các tácđộng có liên quan Tuy nhiên, tác động cụ thể được thi hành phụ thuộc vào data Ưuđiểm của tính đa dạng là chúng làm giảm tính phức tạp bằng cách cho phép cùng mộtgiao diện được sử dụng để ghi rõ một lớp tác động tổng quát, chính trình biên dịch sẽlựa chọn tác động cụ thể khi áp dụng cho từng trường hợp Là người lập trình ta khôngphải thực hiện sự lựa chọn này bằng tay Ta chỉ cần nhớ và sử dụng giao diện chung.

-Liên kết tĩnh và kiên kết động (Static and Dynamic Binding):

Khái niệm trong typing và static typing liên kết tĩnh là hoàn toàn khác nhau Strongtyping đề cập tới sự nhất quán của kiểu Stactic binding có nghĩa là kiểu của mọi biếnvà biểu thức là cố định vào lúc biên dịch Dynamic binding nghĩa là các kiểu của mọibiến và biểu thức không cho biết cho tới khi chạy chương trình Bởi vì Strong typingvà Dynamic binding là khái niệm độc lập cho nên một ngôn ngữ có thể vừa Strong vàStatic typing.

1.6 Bản chất của đố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 và hành vi của cácđối tượng giống nhau được định nghĩa trong một lớp chung của chúng, thuật ngữinstance và đối tượng là có thể thay thế lẫn nhau được.

- Trạng thái (state) : của một đối tượng bao gồm tất cả các đặc tính (thường là tĩnh)

của đối tượng trừ đi giá trị hiện tại ( thường là động ) của mỗi đặc tính đó.

-Hành vi (behavior ) : là đối tượng hoạt động và phản ứng như thế nào theo điều kiện

trạng thái của nó thay đổi và message truyền đến.

-Operations (hoạt động) : là một dịch vụ mà một lớp cung cấp cho khách hàng của nó.

Chúng ta thấy rằng một client thường thực thi năm loại opearation đối tượng Ba loạioperation thông thường nhất là :

• Modifier : là operation thay đổi trạng thái của đối tượng Selector: là Operation truy

xuất trạng thái của đối tượng nhưng không làm thay đổi trạng thái của nó.

• Iterrator : là operation cho phép tất cả các phần của một đối tượng được truy xuất

theo một thứ tự đã định nghĩa trước Hai loại operation thông dụng khác cần thiết đểtạo và hủy những instance của một lớp là :

• Constructor :là operation tạo đối tượng và (hoặc) khởi động trạng thái của nó • Destructor :là operation giải phóng trạng thái của một đối tượng và (hoặc) hủy chính

đối tượng đó.

• Indentify(đặc điểm nhận dạng) : indentify là đặc tính của một đối tượng để phân biệt

nó với các đối tượng khác.

1.7 Mối quan hệ giữa các đối tượng

-Links( liên kết) : Link là nối kết vật lý hay ý niệm giữa các đối tượng Một đối tượng

cộng tác với một đối tượng khác thông qua link của nó tới những đối tượng này Hay nói cách khác, một link vó nghĩa là một hợp tác cụ thể qua đó một đối tượng ( client)

Trang 8

áp dụng những dịch vụ của đối tượng khác (nhà cung cấp) hoặc qua đó một đối tượngcó thể điều khiển đối tượng khác.

- Một đối tượng có thể đóng các vai trò sau:

• Actor : một đối tượng có thể làm việc trên một đối tượng khác nhưng nó không bao

giờ cho một đối tượng khác làm việc trên nó, thuật ngữ actor và active object có thểthay thế lẫn nhau.

• Server :một đối tượng không bao giờ làm việc trên một đối tượng khác, nó chỉ cho

đối tượng khác làm việc trên nó.

• Agent : một đối tượng vừa làm việc trên đối tượng khác vừa cho đối tượng khác làm

việc trên nó, một đại lý thường được tạo ra để làm công việc cho một actor hay mộtagent khác

• Đối tượng được cung cấp là global đối với client.

• Đối tượng cung cấp là một tham số cho các operation của client.• Đối tượng cung cấp là một phần của đối tượng client.

• Đối tượng cung cấp được khai báo cục bộ trong operation của client.

Khi có multiple thread control, việc truyền thông tin giữa các đối tượng cần xử lý vấnđề multual exclusion trong hệ thống xử lý đồng thời Vấn đề đồng bộ hóa cũng phảixem xét.

-Aggregation : Aggregation có nghĩa là một phân cấp tổng thể / bộ phận, với khả năng

điều khiển từ tổng thể ( còn gọi là aggregate ) tới những bộ phận (được hiểu là nhữngthuộc tính của nó).

1.8 Bản chất của lớp:

-Class (lớp) : là tập hợp của các đối tượng có cùng cấu trúc chung hay hành vi chung.

Một đối tượng đơn giản chỉ là một instance của lớp.

-Interface: của một lớp cho thấy bên ngoài của đối tượng và do đó nhấn mạnh đến vấn

đề trừu tượng trong khi che dấu cấu tr1c và hành vi bên trong.

- Implemention : của môt lớp là cái nhìn bên trong của nó Implemention của một lớp

cơ bản bao gồm tât cả các operation được định nghĩa trong interface Chúng ta chiainterface của lớp thành ba phần:

• Public : là khai báo được truy xuất đến mọi client.

• Protected : là khai báo được truy xuất chỉ chính lớp đó, lớp con của nó, và lớp friend.• Private: là khai báo được truy xuất chỉ chính lớp đó và lớp friend.

1.9 Mối quan hệ giữa các lớp:

Phần lớn ngôn ngữ hướng đối tượng hỗ trợ trực tiếp một vài kết hợp của những quanhệ 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à một lớp chia sẽ cấu trúc và (hoặc) hành vi được định nghĩa

bởi một lớp (đơn thừa kế) hoặc nhiều lớp (đa thừa kế).

• Aggregation (kết tập) : quan hệ kết tập giữa các lớp giống như quan hệ kết tập giữa

các đối tượng tượng giữa các lớp đó Đa thừa kế thường bị lẫn lộn với kết tập TrongC++ thừa kế protected hay private dễ dàng bị thay thế bởi kết tập protected hay privatecủa instace của lớp cha, mà không mất tính ngữ nghĩa của nó.

Trang 9

Phần 2 VISUAL C++ 6.0

2.1.Cách cài đặt

Visual C++ 6.0 nằm trong bộ Visual Studio,là bộ phần mềm hỗ trợ lập trình trongWindows do hãng Microsoft sáng chế Cách cài đặt bộ phần mềm Visual Studio 6.0Enterpise Edition như sau :

Có thể copy bộ đĩa vào máy và kích hoạt file Setup.exe để cài đặt chương trình,

chương trình sẽ tự khởi động và hiện lên cửa sổ cài đặt như hình dưới đây :

Hình 2.1 – Nhấn Next để tự động cài đặt Visual Studio 6.0Hệ thống tự động cài đặt Java Virtual Machine.

Hình 2.2 – Chương trình đang giải nén các files cài đặt Microsoft VM

Trang 10

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 khi hoàn tất cài đặt Microsoft VM (Java Virtual Machine), tiếp tục cài đặt VisualStudio 6.0

Hình 2.4 – Nhấn Next để cài đặt Visual Studio 6.0 trong cửa sổ cài đăt hiện ra

Trang 11

Hình 2.5 – Nhấp dấu chọn vào ô tròn tại dòng “I accept the agreement” để đồng ýđiều khoản sử dụng, sau đó nhấn Next để tiếp tục cài đặt

Hình 2.6– Dòng màu xanh là nơi cài đặt VS 6.0, hãy để mặc định, nhấn Next để tiếptục

Hình 2.7 – Khởi động trình cài đặt, chờ đến khi xuất hiện màn hình cài đặt

Trang 12

Hình 2.8– Đánh dấu chọn vào dòng Graphics để được hỗ trợ về đồ họa trong các ứngdụng sau này Chọn xong nhấn Continue.

Hình 2.9– Bỏ dấu chọn tại dòng Register Environment Variables và nhấn OK

Hình 2.10 – Nhấn Yes để tiếp tục

Trang 13

Hình 2.11 – Trình cài đặt đang thực hiện cài đặt VS C++6.0

Hình 2.12 – Firewall (tường lửa) của Windows sẽ chặn các ứng dụng lạ, hãy ấnUnblock để mở khóa

Hình 2.13 – Nhấn OK

Trang 14

Hình 2.14 – Cài đặt hoàn tất, nhấn Restart Windows để khởi động lại máy

Hình 2.15 – Chọn MSDN để cài đặt (nếu không có thư viện MSDN thì kích vào Exit đểkết thúc cài đặt ).

Trang 15

Hình 2.16 Chọn đường dẫn trong ổ cứng (hoặc ổ CD ) chứa thư viện MSDN 2001.

Sau khi kết thúc cài đặt có thể cài thêm Visual AssistX là công cụ hỗ trợ ngữ pháptrong Visual Studio nói chung và Visual C++ Đến đây đã hoàn tất việc cài đặt VisualC++ 6.0.

Trang 16

2.2.Giao diện chương trình

Dưới đây là giao diện chương trình :

Hình 2.17.Giao diện chương trình VC++ 6.0

*Workspace : có 3 tab lựa chọn trong “vùng chuyển đổi các cây thư mục”

-Class View :hiển thị các cây lớp được sử dụng trong chương trình Class View chính

là nơi quản lý các lớp các hàm một cách nhanh nhất Nó chính là cây thư mục mà lớnnhất là lớp ứng dụng, các nhánh bé hơn là các lớp và chia ra các hàm ta đã sử dụng , bénhất trong cây thư mục này chính là các biến có mặt

-Resource View : Cây thư mục này chứa tất cả những gì liên quan đến phần giao diện

của ứng dụng , là nơi ta chỉnh sửa các thêm bớt các Dialog,các thanh công cụ, icon,các

nút bấm ( Button) hay ListBox, Picture, editbox …

-File View : nó là cây thư mục chứa các File có mặt trong ứng dụng , các file thư viện

thêm vào tạo nên ứng dụng Khi muốn tác động lên đối tượng trong chương trình có

thể tác động trong ClassView hoặc chọn trực tiếp File trong File View để kích hoạt.*Vùng soạn thảo : là vùng hiển thị các nhánh trong các cây thư mục hay chính là hiển

thị nội dung của chúng

*Vùng thông báo : khi biên dịch chương trình các thông báo sẽ hiển thị ở đây, cho ta

biết chương trình có lỗi hay không và cụ thể lỗi ở đâu cũng như nêu ra các nguyênnhân cơ bản gây ra lỗi

Trang 17

Hình 2.18 Các Menu và ToolBar trong VC++ 6.0

2.3.Các thao tác cơ bản với Menu và Toolbar của VC++ 6.0

Đối với VC++ 6.0 chúng ta cần quan tâm tới các Menu View, Insert, Project, Debug,Layout và toolbar Control , còn các menu khác cách sử dụng hoàn toàn tương tự như

các phần mềm khác

Menu View : ta quan tâm tới 2 tab Class Wizard (Ctrl+W )có

tác dụng mở ra hộp thoại Class Wizard sử dụng các sự kiện

(Messages) tác động lên đối tượng thông qua các địa chỉ điềukhiển (Control IDs) và các lớp (Class Name) Và tabID=Resource Sybols mở ra hộp thoại

Resource Symbols lưu lại các địa chỉ

của các đối tượng được sử dụng trongứng dụng, ở đây ta có thể thay đổithông số qua tác động “change” xemcách thức nó được sử dụng trong ứng

dụng “View Use” hay tạo mới “New” Khi tạo sự kiện WM_TIMER ta phải

sử dụng các bộ định thời và nên dùnghộp thoại này để tạo các địa chỉ điềukhiển chúng

Hình 2.19.Menu View

Trang 18

Menu Debug : Menu này chứa các lệnh biên dịch

cho ứng dụng

Biên Dịch Chương trình : Ctrl-F7Dịch và liên kết : F7Thực thi : Ctrl+F5Thực thi ở chế độ Debug :F5

Tạo Breakpoint : F9(chạy tiếp bằng cách ấn F5)Nhảy đến vị trí con trỏ (Debug) : Ctrl +F10

Nhảy qua một dòng thực thi : F10Nhảy vào trong 1 hàm : F11Nhảy ra khỏi hàm : Ctrl-F11

Hiển thị Dialog xem thử ngay khi thiết kế :Ctrl+TĐặt thứ tự tab giữa các control : Ctrl +D

Arrange Buttons : để điều chỉnh vị trí các nút bấm

Center in Dialog : để căn chỉnh đối tượng vào giữa giao diện theo chiều ngang

Trang 19

(Horizontal) hay theo chiều dọc (vertical )….

Để tác động lên 1 đối tượng ta chỉ cần kích vào đối tượng rồi chọn thao tác, nếu muốntác động lên nhiều đối tượng cùng lúc thì giữ Ctrl và kíchchọn lần lượt các đối tượng

Hình 2.23 Menu Layout

ToolBar Control :

Đây là công cụ chính để tạo ra các thành phần cơ bản trong

giao diện , các nút bấm (button), editbox, listbox , combobox, spin …, khi đưa thêm các ActiveX vào ứng dụng nócũng có mặt trong toolbar

control này

Hình 2.24.ToolBar Control

2.4.Các môi trường xây dựng ứng dụng trong VC++ 6.0

2.4.1.Dialog based

Là môi trường làm việc trên các cửa sổ đơn, Dialog based tương đối đơn giản dễ sử

dụng và có khả năng thiết kế giao diện đẹp

2.4.2.Single Document Interface( SDI) : là môi trường tạo ra các ứng dụng đơn tài

liệu hỗ trợ một vùng quan sát và chỉ có thể làm việc với một kiểu tài liệu tại một thờiđiểm

2.4.3.Multiple Document Interface (MDI) : môi trường cho phép tạo ra các ứng dụng

đa tài liệu , với mỗi tài liệu có một hoặc nhiều vùng quan sát

Trang 20

Phần 3 HƯỚNG DẪN LẬP TRÌNH VC++ 6.0

Hình 3.1 sơ đồ các bước xây dựng chương trình với VC++ 6.0

Chương 1 Các thao tác với lớp, hàm, biến

Ứng dụng cơ bản nhất chính là kiểu Dialog Based Với kiểu ứng dụng này hệ

thống sẽ không có những hộ trợ ban đầu về thanh công cụ, các menu Tuy nhiên khilàm việc trên kiểu ứng dụng này sẽ dễ dàng cho việc hình dung các thao tác hơn

Chúng ta có thể thiết kế các menu và toolbar riêng

3.1.1.Đưa các file có sẵn vào trong chương trình ứng dụng :

Trong một số trường hợp, các ứng dụng có thể sử dụng dữ liệu có sẵn (đã được

viết cho một chương trình nào đó)như các header file, source file hay các thư viện

được viết riêng rẽ vì vậy sử dụng thao tác này để tiết kiệm được thời gian code chương

trình Khởi động chương trình VC++ 6.0 và tạo một chương trình mới (Ở đây tạo mộtứng dụng MFC AppWizard , tên ứng dụng là VD):

Trang 21

Hình 3.2 Tạo một ứng dụng MFC.

Hình 3.3.Chọn Kiểu ứng dụng tạo ra là Dialog Cơ bản

Hình 3.4.Chọn Project>Add To Project>File để đưa thêm file vào ứng dụng.

Trang 22

Sau khi chọn File trong Insert Files into Project ta chọn đường dẫn tới file cần đưa

vào ứng dụng :

Hình 3.5 Đường dẫn tới file cần đưa vào (chọn file> ok)

Đôi khi chúng ta cần đưa một ActiveX vào trong ứng dụng (đây chính là các thành

phần được thiết kế sẵn, độc lập, khi đưa vào sử dụng ta chỉ cần chỉnh sửa thông số cho

phù hợp), thì thay vì chọn File trong tab Add to Project ta chọn Components andControl để đưa ActiveX vào ứng dụng

Hình 3.6 Đưa ActiveX vào ứng dụng.

Chọn đường dẫn tới ActiveX cần thêm :

Trang 23

Hình 3.7 Nơi chứa các ActiveX

3.1.2 Thêm lớp mới vào trong chương trình :

VS C++ quản lý các đổi tượng thông qua các lớp, trong các lớp này chứa thông

tin và kiểu dữ liệu cũng như cách thức sử dụng các thành phần của lớp Vì vậy tạo ramột lớp mới là một công việc diễn ra một cách thường xuyên, dưới đây là những thaotác cơ bản để tạo ra một lớp mới

VD: tạo một lớp đường thẳng chứa thông tin về 2 điểm được kích hoạt khi dùngchuột, các hàm tạo điểm, lấy điểm, hàm vẽ nối 2 điểm

Hình 3.8.Chọn tab Class View trong Workspace> kích chuột phải vào VD class>ChọnNew Class

Trang 24

Hình 3.9 Đặt tên lớp DuongThang Ấn OK để kết thúc

Hình 3.10.Sau khi tạo lớp sẽ có các thành phần liên quan tới lớp vừa tạo ra.

Chúng ta sẽ tác động đến lớp này thông qua Header file và source file, chúng nằmtrong vùng làm việc cây thư mục File View

Hình 3.11.Header DuongThang.h sẽ chứa các khai báo dùng trong lớp DuongThang

Trang 25

Hình 3.12.Source File DuongThang.cpp sẽ thực thi những gì đã khai báo trongHeader file DuongThang.h

3.1.3 Thêm một hàm mới nằm trong lớp :

Hàm trong VS C++ được khai báo trong các lớp và được gọi trong ứng dụng để

thực thi lệnh Các thuộc tính của hàm làKiểu hàm, Tên hàm, và kiểu truy cập dữ

liệu .Trong VC++ có một hệ thống thư

viện có sẵn, thực chất các thư viện là cácchương trình đã được đóng gói, bản thânnó có cấu trúc như một lớp, có các hàm vàcác hàm này đã được định nghĩa Ta hoàntoàn có thể tạo được một thư viện bằngcách viết một chương trình với kiểu ứng

dụng Win32 static Library, công việc viết

chương trình hoàn toàn bình thường tuynhiên không có phần hiển thị và không cógiao diện chương trình, chúng chính là phần thiết kế module Các module thư

viện sẽ giúp cho công việc lập trình với Hình 3.13.Thêm hàm

VC++ có thể chia sẻ, phân tách cho nhiều người cùng làm, và để có một chương trình

hoàn chỉnh sẽ là gắn kết các module thư viện này thành một

Vì vậy các hàm có thể gọi trực tiếp từ các module thư viện hoặc có thể viết hàm trongchương trình sau đó gọi tới nó bằng cách truyền cho nó tham số.

Để tạo hàm trong chương trình :

Chúng ta sử dụng 2 cách cơ bản để thêm hàm :

Cách thứ nhất là kích chuột phải vào tên Lớp trong vùng làm việc với cây thư mục

ClassView (ở đây là lớp đường thẳng ), chọn Add Member Function để mở ra hộpthoại Add Member Function :

Trang 26

Hình 3.14.Thêm hàm mới vào trong lớp DuongThang

Trang 27

Hình 3.16.Thao tác thêm hàm mới bằng “Tay”

3.1.4.Cách thêm một biến mới.

Các biến có thể khai báo theo hai hướng Biến có thể khai báo trong một lớp như cách thêm một hàm mới

Hình 3.17.Thêm biến vào trong lớp DuongThang

Hình 3.18.Thuộc tính của biến

Trang 28

Có kiểu thêm biến khác chính là thêm biến điều khiển cho các thành phần của

Dialog.Các biến này sẽ thông qua các sự kiện để điều khiển Dialog Chẳng hạn trongmột ứng dụng về giao tiếp máy tính có ComboBox khác nhau, chúng ta sẽ tiến hànhthao tác trên comboBox chứa các cổng Com, vì vậy phải đặt biến điều khiển cho nó

Hình 3.19.Thêm biến điều khiển thành phần của Dialog.

Ấn Ctrl+W để hiện bảng MFC ClassWizard Ở đây sẽ chứa toàn bộ các thành phần

trong phần giao diện chĩnh đã được đặt địa chỉ điều khiển và các biến được thêm vào

nhờ Add Variable để điều khiển các ID này

Hình 3.20 Chọn thành phần cần đk(B3), ấn Add Variable(B4).

Trang 29

Hình 3.21.Khai báo thuộc tính của biến

Sau khi ấn ok ở bảng MFC Wizard sẽ xuất hiện thành phần

IDC_COMBO_COMPORT có biến m_cboComPort kiểu CComboBox Ấn Ok để

hoàn tất quá trình

Chú ý : Các biến trong VC++ được khai báo kiểu truy cập là public , private hay

protected Biến kiểu public sẽ được truy cập mọi nơi, biến protected chỉ có thể đượcsự dụng trong một lớp, lớp con và friend của nó Biến private chỉ có tác dụng trong

một lớp và friend của nó

Khi đặt tên các biến nên quan tâm tới chức năng của nó cũng như phạm vi hoạt độngcủa chúng và nên đặt theo một quy tắc thống nhất để dễ quan sát và chỉnh sửa nó khicần thiết

Ví dụ với biến toàn cục nên đặt theo kiểu “m_ ”, biến điều khiển nên có kiểu“m_Ctrl…” …

Một số kiểu dữ liệu của biến hay sử dụng (các biến được quản lý trong một lớp ) :

-Lớp CFont : lớp này quản lý mọi dữ liệu liên quan đến phông chữ được sử dụng

trong chương trình, khai báo biến thuộc lớp này như sau :

CFont font;// Với font là tên biến (tự đặt ).

Khởi tạo cho biến này :

font.CreateFont(……); //Các tham số trong hàm này sẽ được chi tiết hơn

trong mục lấy font hệ thống

-Lớp CString : Lớp này quản lý các chuỗi kí tự Khai báo biến Cstring str ;// Với str là tên biến được đặt

Để tác động được lên chuỗi này (chẳng hạn nội dung của chuỗi ) đều thực hiện theoform sau : str.Hàm(các tham số );

-Lớp CFileDialog : lớp này quản lý các chức năng về File, cách khai báo và khởi tạo

CFileDialog pFile( BOOL ,” Ext”,CString,nFlags, szFilter);

trong đó BOOL là hằng số kiểu BOOL TRUE hay FALSE, “.Ext” là phần mở rộngcủa File được mở bởi một biến được khai báo kiểu “Static CharBASED_CODE”,CString là một chuỗi kí tự, nó là đường dẫn tới File được mở nếuBOOL nhận giá trị TRUE hay đường dẫn tới File được lưu ,nFlags là kiểu hoạt độngcủa thao tác mở file hay lưu file và tham số còn lại szFilter được sử dụng trước đó :

static char BASED_CODE szFiler[]= “……//kiểu file……”;

Sau khi khởi tạo cho biến pFile thì sẽ xuất hiện hộp thoại DoModal( ) nếu ấn Ok thìtham số sau đó sẽ được lưu và không khi không có thao tác OK.

-Lớp CColorDialog : cách thức sử dụng lớp này cũng tương tự như lớp CFileDialog.

Lớp này khi khởi tạo cho nó sẽ mở hộp thoại chọn màu như bảng màu trong Paint của

Trang 30

Window

-Lớp CBitmap : là lớp quản lý các file ảnh định dạng “*.bmp”

-Lớp CRect : lớp chứa các khung hình chữ nhật với 2 thuộc tính là cặp toạ độ (x,y) của2 đỉnh đối diện góc bên trái và góc bên phải của CRect

Trang 31

Chương 2 Tạo các Menu, ToolBar và các thao tác cơ bản

3.2.1.Tạo Menu.

Trong cây thư mục Resource File , kích chuột phải vào resources của ứng dụng để hiện

ra hộp thoại Insert Resource :

Hình 3.22.Thêm các menu, toolbar mới.

Ở đây hộp thoại này có thể chọn tạo ra một Dialog hay meu, toolbar mới , thao tác tiếptheo là ấn New để hoàn tất Hệ thống sẽ mặc định tên cho các thành phần mới tạo ra,đổi tên cho công việc quản lý nó dễ dàng hơn bằng cách kích chuột phải vào nó trong

cây thư mục Resource View và chọn Properties :

Hình 3.23 Đổi tên cho một Dialog vừa tạo ra

Ở đây tạo ra một menu mới có địa chỉ điều khiển là IDR_MENUFILE, menu này

chứa thao tác File (tạo mới, mở file, save file, và thoát chương trình )

Lúc này trong màn hình làm việc , với tab Dialog trong Tab Resource ta tạo thêm cácthành phần trong menu bằng cách kích đúp vào khung hình chữ nhật chống và thêmcác thuộc tính của nó

.

Trang 32

Hình 3.24.Tạo thêm các thành phần cho menu mới tạo ra.

Lúc này nếu cho biên dịch chương trình thì Menu File vừa tạo ra sẽ không có trongGiao diện chương trình Ta phải kích hoạt nó trong Dialog chính, mở thuộc tính củaDialog chính mà ta muốn đưa Menu vừa tạo ra xuất hiện trong đó :

Hình 3.25 Đưa Menu vào trong chương trình

Trong mục Menu chọn địa chỉ điều khiển của Menu File vừa tạo,cho chạy chươngtrình chúng ta sẽ thấy sự hiện diện của Menu vừa thiết kế

Trang 33

Hình 3.26 Giao diện chương trình có mặt Menu vừa thiết kế

Phần viết code cho menu sẽ được đề cập sau

3.2.2.Tạo ToolBar mới

Trong ứng dụng Dialog Based đôi khi cần sự có mặt của các toolbar để thực thilệnh Tạo ra một ToolBar mới nhờ hộp thoại InSert Resource (hình 38)

ToolBar vừa tạo ra được mặc định là IDR_TOOLBAR1 bằng cách mở hộp thoại thuộctính của nó, đổi tên thành IDR_TOOLBAR_DRAW Trên màn hình soạn thảo là các

nút bấm của toolbar, sau khi tạo biểu tượng cho 1 nút bấm hoàn chỉnh VC++ sẽ tựđộng tạo thêm một nút bấm nữa

Hình 3.27 Tạo ra các nút bấm cho ToolBar

Các nút bấm trong Toolbar muốn sử dụng được phải được gán cho một địa chỉ và cácbiến truy cập đến nó.Kích đúp vào các nút bấm này và điều chỉnh thuộc tính thành các

ID_DUONGTHANG ;

ID_DUONGTRON; ID_CHUNHAT

Trang 34

Hình 3.28 Tạo các địa chỉ truy cập cho các nút bấm trong ToolBar.

Lệnh khởi tạo tới nó sẽ được xem xét sau

3.2.3.Tác động các sự kiện lên đối tượng

Hình 3.29.Cách tác động lên các đối tượng trong ứng dụng.

Ấn Ctrl+W để xuất hiện hộp thoại MFC ClassWizard, chọn tab Message Maps, mụcclass name chính là phần chọn lớp mà chúng ta muốn tác động lên, chọn địa chỉ điều

khiển của đối tượng cần chịu sự kiện tác động, tab messages chính là danh sách các sự

kiện có thể tác động lên đối tượng, chọn sự kiện (kích đúp hoặc chọn rồi ấn AddFunction ), chọn Edit Code để viết code tác động, hoặc trong file nguồn của lớp tìm

đến sự kiện tác động để viết lệnh

Trang 35

3.2.4 Đẩy một icon lên nút bấm trong ứng dụng

Việc đưa một biểu tượng lên nút bấm sẽ tăng thêm tính bắt mắt cho giao diện củachương trình ứng dụng (Ở đây lấy ứng dụng mang tên Font) Đầu tiên phải sử dụng

hộp thoại Insert Resource (mục 5 đã đề cập) bằng cách kích chuột phải vào Resourcecủa ứng dụng trong cây thư mục Resource View, chọn New để tạo ra icon mới bằngcách vẽ trực tiếp trong VC++ 6.0 và chọn Import khi tải Icon có sẵn Icon mới tạo rađược mặc định địa chỉ điều khiển là IDI_ICON1 Ta sẽ thực hiện thao tác đưa Iconnày lên nút bấm có địa chỉ là IDC_BUTTON1 Đổi tên các icon và button này thànhIDI_MUSIC và IDC_MUSIC

Dùng sự kiện WM_INITDIALOG tác động lên giao diện chính của chương trình :

Hình 3.30.Tác động WM_INITDIALOG lên lớp CFontDlg

Ấn Add Function, tự động mặc định cho ta kiểu hàm tác động là OnInitDialog, ấn Editcode để soạn mã lệnh

BOOL CFontDlg::OnInitDialog( )//Hàm tác động , hàm này thường //dùng để khởi tạo

CDialog::OnInitDialog( );

HICON m_browse; //Tạo một biến kiểu HICON để tải icon

m_browse=AfxGetApp( )->LoadIcon(IDI_MUSIC);// Tải icon có địa chỉ IDI_MUSIC và gán cho biến m_browse

CButton* m_dk=(CButton*)GetDlgItem(IDC_MUSIC);

//Tạo ra biế /m_dk điều khiển sự hiển thị của nút bấm IDC_MUSICm_dk->SetIcon(m_browse);// Đặt icon lên nút bấm

return TRUE;}

Cho chạy chương trình chúng ta sẽ thấy nút bấm sẽ có hình là Icon IDC_MUSIC (ở đây là biểu tượng WD media player):

Trang 36

H ình 3.31 Đẩy Icon lên nút bấm

3.2.5.Tạo các ToolTip (chú thích ) cho đối tượng

Các tooltip này sẽ được tác động lên đối tượng thông qua sự kiện

WM_INITDIALOG.Tạo một ứng dụng MFC AppWizard với kiểu Dialog basedmang tên Font.

Kích chuột vào File View và tìm đến file FontDlg.h để khai báo một biến m_toolTipthuộc lớp CtoolTipCtrl(là lớp quản lý các chú thích cho đối tượng ) và kiểu truy cậpPublic.

CToolTipCtrl m_toolTip;………

Trong ứng dụng cần thêm một chú thích cho nút bấm có địa chỉ điều khiển là

IDC_MUSIC (vốn đã được thay bằng một Icon nên thêm chú thích để người dùng dễnhận biết ) Chú thích này có nội dung là “ Find PathName of Wave soud to play”

Để hiển thị được chú thích này phải thực hiện 2 bước :

Bước 1{ Gán chú thích lên nút bấm ( có định nghĩa màu nền, màu chữ ); }Bước 2{Relay để chú thích đó hiển thị được;}

Bước 1:

Ấn Ctrl+W để xuất hiện hộp thoại MFC class Wizard :

Chọn Class name là CFontDlg, Object IDs là CFontDlg, kích đúp vào MessagesWM_INITDIALOG để hàm mặc định là OnInitDialog và ấn Edit Code để viết

chương trình :

Trang 37

Hình 3.32.Tác động sự kiện WM_INITDIALOG.BOOL CFontDlg::OnInitDialog()

m_toolTip.Create(this);//Khởi tạo chú thíchm_toolTip.Activate(TRUE);//Kich hoạt chú thích

m_toolTip.SetTipBkColor(RGB(255,255,255));// Đặt màu nền cho

Bước 2: Thêm sự kiện PreTranslateMessage để relay và hiển thị chú thích, cũng vớithao tác như tác động sự kiện WM_INITDIALOG nhưng giờ là chọn sự kiệnPreTranslateMessage ấn edit code và viết lệnh như dưới :

BOOL CFontDlg::PreTranslateMessage(MSG* pMsg) {

m_toolTip.RelayEvent(pMsg);//Relay sự kiện có mặt chú thích

//tác động lên nút bấm

return CDialog::PreTranslateMessage(pMsg);}

Ấn F5 để biên dịch chương trình ta thu được kết quả như ý muốn

Trang 38

Hình 3.33.Kết quả hiển thị chú thích khi lướt chuột qua nút bấm.

3.2.6.Tác động tới biểu tượng chuột trong ứng dụng

Trong ứng dụng về ActiveX ở mục 11, tác động biểu tượng chuột bằng cách thêm sự

kiện WM_MOUSEMOVE (Ấn Ctrl+W và chọn lớp CWMADlg với sự kiệnWM_MOUSEMOVE ) :

void CWMADlg::OnMouseMove(UINT nFlags, CPoint point) {

HCURSOR BieuTuongConTro; // tạo một biến để lưu giữ biểu tượng

//tượng chuột lên biến

::SetCursor(BieuTuongConTro);//Thiết lập biểu tượng chuột hiện //hànhCDialog::OnMouseMove(nFlags, point);

Ấn F5 để chạy chương trình

Trang 39

Chương 3 Sử dụng Font và giờ hệ thống

3.3.1.Lấy font hệ thống viết text và thao tác vẽ lên màn hình

Mọi thao tác liên quan đến hiển thị luôn luôn sử dụng mối liên hệ logic :

-Khai báo ngữ cảnh thiết bị (Device context :DC)

-Khai báo thành phần hiển thị

-Thực thi hiển thị trên ngữ cảnh thiết bị

Vì vậy trong môi trường ứng dụng bao giờ cũng có việc khai báo ngữ cảnh thiết bịtrước khi tiến hành các hoạt động có liên quan đến đồ hoạ

Để cho chương trình gọn và hợp lý, công việc thực thi hiển thị sẽ được viết riêngnhư là các hàm có sử dụng ngữ cảnh thiết bị, sau đó tiến hành khởi tạo đồ hoạ và cuốicùng là thao tác gọi hàm vẽ để hiển thị

Điều thuận lợi trong VC++ đó là tính tương tác của các thành phần trong một lớp rấtcao, các hàm trong một lớp được tạo ra một cách độc lập và được sử dụng khi đượcgọi tới mà không quan tâm đến vị trí khai báo và định nghĩa chúng Cách tác động cácthành phần trong giao diện thông qua các biến điều khiển Nó khiến cho một chươngtrình VC++ nhỏ gọn và có tính rõ ràng hơn rất nhiều

Để khởi tạo đồ hoạ chúng ta sử dụng sự kiện OnInitDialog tác động lên lớp chính hiển thị (trong Dialog based là CprojectDlg ,ở SDI là

CProjectViewDlg …với Project là tên của ứng dụng ).

Để khởi tạo, chọn sự kiện tác động OnInitDialog( ) và thêm đoạn code :

void CProjectDlg::OnInitDialog( ){………

CRect KhungHienThi; //Khai báo một khung hình chữ nhật để hiển thị

//lên nó

GetClientRect(KhungHienThi);// Khởi tạo cho Khung chữ nhật nàyCClientDC dc(this;)//Khai báo ngữ cảnh thiết bị mang tên dc (có tác

// dụng giống như giấy vẽ

pdc_Memory.CreateCompatibleDC(&dc);//pdc_Memory được khai

//báo thuộc lớp CDC có tác dụng như bút vẽ để vẽ lên nền dc

m_NenBitmap.CreateCompatibleBitmap(&dc,KhungHienThi.Width( ), KhungHienThi.Height( ));

//m_NenBitmap được khai báo kiểu CBitmap, hàm

CreateCompatibleBitmap( ) thực hiện công việc kéo Bitmap m_NenBitmap vừa vặn

vào khung chữ nhật đã tạo ra ………

return TRUE; }

Tạo ra công cụ hiển thị thường được viết riêng thành một hàm và sau đó mới được gọitới Hàm này thuộc sự quản lý của lớp hiển thị, khai báo hàm này như sau (trong file

Trang 40

void CProjectDlg::TenHam(CDC*pDC){

//Khai báo bút vẽ nếu thực thi vẽ các đường nét khung hình trên màn hình:

CBrush ButVe(RGB( ,…,…)); //với các tham số của hàm RGB( )để chỉ //thị màu

Sau khi đã chỉ ra cách thức hiển thị ( Hàm được tạo ra để hiển thị) và các vận dụngchuẩn bị cho công việc hiển thị (khởi tạo đồ hoạ ) giờ chỉ là công việc thực thi hiển thị.Công việc này sẽ được thực hiện nhờ sự kiện Paint trong lớp hiển thị chính

void CProjectDlg::Paint( ){………

else {

CPaintDC dc(this); //Khai báo ngữ cảnh thiết bị

//Gọi hàm hiển thị với tham số &dc để tiến hành hiển thị //HàmHiểnThị(&dc);

UpdateData(FALSE);//Hàm này có tham số FALSE khi muốn

//đưa dữ liệu trong chương trình ra màn hình và có tham số TRUE khi nhập //dữ liệu từ bên ngoài vào

……….

CDialog::OnPaint( ); }

Ví dụ dưới đây minhhọa cho một đoạn textchạy trong một khungchữ nhật được vẽ lênmàn hình hiển thị Đầu tiên khởi độngVC++ 6.0, vào

File>New để mở một

ứng dụng MFCAppWizard và

đặt tên chương trìnhlà VD > ấn ok đểchuyển sang bước tiếptheo :

Hình3.34 Tạo chương trình mới mang tên VD kiểu ứng dụng Dialog based

Ngày đăng: 02/11/2012, 13:55

HÌNH ẢNH LIÊN QUAN

Hình 2.4 – Nhấn Next để cài đặt Visual Studio 6.0 trong cửa sổ cài đăt hiện ra - Hướng dẫn lập trình VC 6++
Hình 2.4 – Nhấn Next để cài đặt Visual Studio 6.0 trong cửa sổ cài đăt hiện ra (Trang 10)
Hình 2.16. Chọn đường dẫn trong ổ cứng (hoặc ổ CD ) chứa thư viện MSDN 2001. - Hướng dẫn lập trình VC 6++
Hình 2.16. Chọn đường dẫn trong ổ cứng (hoặc ổ CD ) chứa thư viện MSDN 2001 (Trang 15)
Hình 2.17.Giao diện chương trình VC++ 6.0 - Hướng dẫn lập trình VC 6++
Hình 2.17. Giao diện chương trình VC++ 6.0 (Trang 16)
Hình 2.18. Các Menu và ToolBar trong VC++ 6.0 - Hướng dẫn lập trình VC 6++
Hình 2.18. Các Menu và ToolBar trong VC++ 6.0 (Trang 17)
Hình 3.2. Tạo một ứng dụng MFC. - Hướng dẫn lập trình VC 6++
Hình 3.2. Tạo một ứng dụng MFC (Trang 21)
Hình 3.5. Đường dẫn tới file cần đưa vào (chọn file> ok) - Hướng dẫn lập trình VC 6++
Hình 3.5. Đường dẫn tới file cần đưa vào (chọn file> ok) (Trang 22)
Hình 3.12.Source File DuongThang.cpp sẽ thực thi những gì đã khai báo trong Header  file DuongThang.h - Hướng dẫn lập trình VC 6++
Hình 3.12. Source File DuongThang.cpp sẽ thực thi những gì đã khai báo trong Header file DuongThang.h (Trang 25)
Ấn Ctrl+W để hiện bảng MFC ClassWizard .Ở đõy sẽ chứa toàn bộ cỏc thành phần trong phần giao diện chĩnh đó được đặt địa chỉ điều khiển và cỏc biến được thờm vào  nhờ Add Variableđể điều khiển cỏc ID này . - Hướng dẫn lập trình VC 6++
n Ctrl+W để hiện bảng MFC ClassWizard .Ở đõy sẽ chứa toàn bộ cỏc thành phần trong phần giao diện chĩnh đó được đặt địa chỉ điều khiển và cỏc biến được thờm vào nhờ Add Variableđể điều khiển cỏc ID này (Trang 28)
Hình 3.19.Thêm biến điều khiển thành phần của Dialog. - Hướng dẫn lập trình VC 6++
Hình 3.19. Thêm biến điều khiển thành phần của Dialog (Trang 28)
Sau khi ấn ok ở bảng MFC Wizard sẽ xuất hiện thành phần - Hướng dẫn lập trình VC 6++
au khi ấn ok ở bảng MFC Wizard sẽ xuất hiện thành phần (Trang 29)
Hình 3.24.Tạo thêm các thành phần cho menu mới tạo ra. - Hướng dẫn lập trình VC 6++
Hình 3.24. Tạo thêm các thành phần cho menu mới tạo ra (Trang 32)
Hình 3.27. Tạo ra các nút bấm cho ToolBar - Hướng dẫn lập trình VC 6++
Hình 3.27. Tạo ra các nút bấm cho ToolBar (Trang 33)
Hình 3.29.Cách tác động lên các đối tượng trong ứng dụng. - Hướng dẫn lập trình VC 6++
Hình 3.29. Cách tác động lên các đối tượng trong ứng dụng (Trang 34)
Hình 3.33.Kết quả hiển thị chú thích khi lướt chuột qua nút bấm. - Hướng dẫn lập trình VC 6++
Hình 3.33. Kết quả hiển thị chú thích khi lướt chuột qua nút bấm (Trang 38)
Hình 3.37.Code được viết trong hàm OnInitDialog( ). - Hướng dẫn lập trình VC 6++
Hình 3.37. Code được viết trong hàm OnInitDialog( ) (Trang 43)
Hình 3.46.Thêm các biến điều khiển . - Hướng dẫn lập trình VC 6++
Hình 3.46. Thêm các biến điều khiển (Trang 49)
Hình 3.47.Sử dụng sự kiện WM_TIMER. - Hướng dẫn lập trình VC 6++
Hình 3.47. Sử dụng sự kiện WM_TIMER (Trang 50)
Hình 3.49.Giao diện chương trình . - Hướng dẫn lập trình VC 6++
Hình 3.49. Giao diện chương trình (Trang 56)
Hình 3.54.Thêm sự kiện BN_CLICKED cho các nút bấm . - Hướng dẫn lập trình VC 6++
Hình 3.54. Thêm sự kiện BN_CLICKED cho các nút bấm (Trang 60)
Hình 3.55 .Mở các kiểu file đã được quy định - Hướng dẫn lập trình VC 6++
Hình 3.55 Mở các kiểu file đã được quy định (Trang 61)
Hình 3.57.Giao diện chương trình thiết kế. - Hướng dẫn lập trình VC 6++
Hình 3.57. Giao diện chương trình thiết kế (Trang 66)
Hình 3.62 .Tạo sự kiện BN_CLICKED cho các nút bấm. - Hướng dẫn lập trình VC 6++
Hình 3.62 Tạo sự kiện BN_CLICKED cho các nút bấm (Trang 73)
Hình 3.65.Chọn Device Manager . - Hướng dẫn lập trình VC 6++
Hình 3.65. Chọn Device Manager (Trang 88)
Hình 3.69.Tạo ứng dụng GiaoTiep . - Hướng dẫn lập trình VC 6++
Hình 3.69. Tạo ứng dụng GiaoTiep (Trang 91)
Hình 3.71. Đưa ActiveX MSComm vào ứng dụng - Hướng dẫn lập trình VC 6++
Hình 3.71. Đưa ActiveX MSComm vào ứng dụng (Trang 92)
Hình 3.75 . Đưa các nút bấm và Edit Box vào trong giao diện chương trình . - Hướng dẫn lập trình VC 6++
Hình 3.75 Đưa các nút bấm và Edit Box vào trong giao diện chương trình (Trang 94)
Hình 3.82.Chọn InstallShield và ấn Finish để kết thúc. - Hướng dẫn lập trình VC 6++
Hình 3.82. Chọn InstallShield và ấn Finish để kết thúc (Trang 110)
-Khi kớch đỳp vào mục Links bờn trỏi sẽ hiện ra một bảng trắng, kớch đỳp vào nền trắng và tỡm đường dẫn tới nơi chứa cỏc file Exe và Dll cần đưa vào: - Hướng dẫn lập trình VC 6++
hi kớch đỳp vào mục Links bờn trỏi sẽ hiện ra một bảng trắng, kớch đỳp vào nền trắng và tỡm đường dẫn tới nơi chứa cỏc file Exe và Dll cần đưa vào: (Trang 114)
Hình 3.90. Hoàn tất nội dung cho các thành phần của bộ cài - Hướng dẫn lập trình VC 6++
Hình 3.90. Hoàn tất nội dung cho các thành phần của bộ cài (Trang 114)
Program File và Shared DLLs và để ý bảng bờn phải .Kớch đỳp vào mục Include Files - Hướng dẫn lập trình VC 6++
rogram File và Shared DLLs và để ý bảng bờn phải .Kớch đỳp vào mục Include Files (Trang 115)
ở cuối bảng này, trong hộp thoại chọn cỏc thành phần cần khai bỏo với hệ thống: - Hướng dẫn lập trình VC 6++
cu ối bảng này, trong hộp thoại chọn cỏc thành phần cần khai bỏo với hệ thống: (Trang 115)
Hình 3.98 .Giao diện chính của chương trình. - Hướng dẫn lập trình VC 6++
Hình 3.98 Giao diện chính của chương trình (Trang 120)
Bảng điều khiển: - Hướng dẫn lập trình VC 6++
ng điều khiển: (Trang 122)
Hình 3.99 .Hộp thoại Configure. - Hướng dẫn lập trình VC 6++
Hình 3.99 Hộp thoại Configure (Trang 122)
Bảng điều khiển: - Hướng dẫn lập trình VC 6++
ng điều khiển: (Trang 123)
Bảng điều khiển: - Hướng dẫn lập trình VC 6++
ng điều khiển: (Trang 124)
Bảng điều khiển: - Hướng dẫn lập trình VC 6++
ng điều khiển: (Trang 125)
Bảng điều khiển: - Hướng dẫn lập trình VC 6++
ng điều khiển: (Trang 126)
Bảng điều khiển: - Hướng dẫn lập trình VC 6++
ng điều khiển: (Trang 126)
Hình 3.106.Sơ đồ khối thuật toán mô phỏng gia công theo đường thẳng - Hướng dẫn lập trình VC 6++
Hình 3.106. Sơ đồ khối thuật toán mô phỏng gia công theo đường thẳng (Trang 133)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w