Hướng dẫn lập trình ứng dụng trên Visual C++ 6.0

MỤC LỤC

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

-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ớn nhấ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. 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ều khiển (Control IDs) và các lớp (Class Name).

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

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

Để 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ốn tác động lên nhiều đối tượng cùng lúc thì giữ Ctrl và kích chọn lần lượt các đối tượng. Đâ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 , combo box, spin …, khi đưa thêm các ActiveX vào ứng dụng nó cũng có mặt trong toolbar.

Các thao tác với lớp, hàm, biến

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

Đô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 and Control để đưa ActiveX vào ứng dụng. 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 ra mộ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 thao tác cơ bản để tạo ra một lớp mới.

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

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

Đặt tên hàm (Function Declaration ), kiểu dữ liệu của hàm (Function Type) và cách thức truy cập nó (Public ).Cuối cùng chọn Ok để hoàn tất.

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

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 trong một ứng dụng về giao tiếp máy tính có ComboBox khác nhau, chúng ta sẽ tiến hành thao 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ó. Biến kiểu public sẽ được truy cập mọi nơi, biến protected chỉ có thể được sự 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ó.

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

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

    Ấn Ctrl+W để xuất hiện hộp thoại MFC ClassWizard, chọn tab Message Maps, mục class 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 Add Function ), 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. Đầ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 Resource của ứng dụng trong cây thư mục Resource View, chọn New để tạo ra icon mới bằng cá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 Icon này lên nút bấm có địa chỉ là IDC_BUTTON1.

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

    Sử dụng Font và giờ hệ thống

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

    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ụng chuẩ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ị. Chọn kiểu ứng dụng là Dialog based và ấn Finish để khởi tạo chương trình.Ví dụ sẽ viết một đoạn text (gán cho một biến toàn cục m_auto)và di chuyển trong giao diện chương trình ứng dụng.

    Hình 3.37.Code được viết trong hàm OnInitDialog( ).
    Hình 3.37.Code được viết trong hàm OnInitDialog( ).

    Thiết kế một Dialog riêng đưa nó vào Dialog chính , cập nhật giờ hệ thống

    “->” là dấu hiệu cho thấy tác động của hàm tiếp theo sau đó.EnableWindow (BOOL) sẽ làm cho đối tượng ở trạng thái Enable khi hằng số BOOL là TRUE và sẽ ở trạng thái Disable (không hiệu chỉnh được đối tượng ) khi BOOL là FALSE. Thực hiện công việc kiểm tra xem các giá trị giờ >= 24 ?, phút>=60,giây>=60 hay không rồi sửa lại sau đó gán lên các edit box .Cài đặt sự kiện WM_TIMER để hiển thị được sự thay đổi của các edit box bằng cách cài đặt cho nút bấm Begin một bộ định thời trước khi hiện kết quả.

    Hình 3.46.Thêm các biến điều khiển .
    Hình 3.46.Thêm các biến điều khiển .

    Đọc và hiển thị file Text

    Đọc và hiển thị nội dung file . Bước 1 : Khai báo kiểu file được phép tải

    SetDlgItemText(IDC_STATIC1,str); //Hiển thị lên static m_show=str; //Lưu lại nội dung file để dùng khi cần UpdateData(FALSE); //Cập nhật dữ liệu lên màn hình fclose(FileDuocMo ); //Đóng file lại.

    Ghi nội dung lên file

    -dwDesiredAccess: 0 hoặc GENERIC_READ (thuộc tính đọc )hoặc GENERIC_WRITE( thuộc tính ghi ), có thể kết hợp 2 thuộc tính đọc và ghi để thành vừa đọc vừa ghi (GENERIC_READ| GENERIC_WRITE). -dwCreationDispostion: nhận các giá trị CREATE_NEW ( tạo ra một file mới, hàm sẽ không hoàn thành nếu như file được xác nhận là đã tồn tại ),. CREATE_ALWAYS ( tạo ra một file mới, nếu như file tồn tại rồi , hàm sẽ cho phép ghi đè lên ), OPEN_EXISTING(mở file, hàm không hoàn thành nếu như file được mở không tồn tại ), OPEN_ALWAYS ( nếu file tồn tại nó sẽ mở file, nếu file không tồn tại thì nó sẽ tạo ra một file mới với tham số dwCreationDispostion là CREATE_NEW ), TRUNCATE_EXISTING( mở. file , mỗi lần mở file ,kích thước của file sẽ bị cắt đi).

    Ví dụ minh hoạ

    -Nút bấm Save As(IDC_BUTTON_SAVEAS) :sẽ lưu lại nội dung vào một file mới -Rich Textbox(IDC_HIENTHI) là ActiveX được đưa vào ứng dụng, được sử dụng để hiển thị nội dung các file được tải lên. Riêng đối với Rich Textbox để trống mục File Name (Load File ) và không chọn lock trong tab Control, trong Tab Color chọn lấy một màu làm màu nền cho Rich Texbox, sửa mục ScrollBars trong tab Appearance là 2-rtfVertical. CreateFile(TenFileSave, // đặt tên file. GENERIC_READ | GENERIC_WRITE, // tạo thuộc tính có thể ghi và đọc. FILE_SHARE_READ|FILE_SHARE_WRITE, // có thể chia sẻ. CREATE_ALWAYS, // tạo file có tên là tên được đặt FILE_ATTRIBUTE_NORMAL, // file thông thường NULL);.

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

    Sử dụng ActiveX trong ứng dụng

    UpdateData(FALSE); //Cập nhật dữ liệu ra màn hình CDialog::OnMouseMove(nFlags, point);}. Việc sử dụng toạ độ chuột trên màn hình sẽ khiến cho việc trình bày dễ dàng hơn ,sau khi sử dụng xong có thể xoá phần hiển thị toạ độ chuột ).Căn chỉnh khung chương trình nằm trong khung chữ nhật có toạ độ các đỉnh đối diện (12,12) ,(524,473). Ấn F5 để biên dịch chương trình và khi ấn Browse chọn File sẽ thấy hiển thị trên ListBox các file được chọn (ở trên trình bày thuật toán mở chọn nhiều file và hay được sử dụng trong VC ++). Với các nút bấm còn lại đều liên quan đến lớp ActiveX(ActiveX Window Media Player này được điều khiển bởi biến m_ctrl) đưa vào và phải xem các hàm liên quan tới nó được khai báo và định nghĩa như thế nào .Trong.

    Hình 3.62 .Tạo sự kiện BN_CLICKED cho các nút bấm.
    Hình 3.62 .Tạo sự kiện BN_CLICKED cho các nút bấm.

    Giao tiếp máy tính

    Giao tiếp máy tính với các thiết bị bên ngoài bằng chuẩn giao tiếp RS232 RS232 là chuẩn giao tiếp nối tiếp dùng định dạng không đồng bộ, kết nối nhiều nhất là 2

    Để có thể sử dụng chuẩn giao tiếp này cần phải biết được thuộc tính của nó trong hệ điều hành hiện tại của máy .Kích chuột phải vào My Computer, chọn Properties, chọn mục Harware và chọn tab Device Manager. - Đồng thời nếu có dữ liệu truyền về cổng Com thì dữ liệu sẽ được hiển thị lên EditBox Receive .Khi nhấn vào Clear thì sẽ xoá dữ liệu hiển thị trên EditBox này. Trong hộp thoại tiếp theo mở thư mục Registered ActiveX Controls và chọn Microsoft Comunications Control, version 6.0 và bấm Insert để đưa ActiveX này vào trong ứng dụng ,.

    Hình 3.65.Chọn Device Manager .
    Hình 3.65.Chọn Device Manager .

    VC++ 6.0 với thiết kế 3D

      Ở trên m_hDC thuộc lớp CDC và là biến có sẵn .Chúng ta có thể tự do kiểm tra định dạng Pixel bằng hàm ChoosePixelFormat và có thể chọn lại nếu không thích .Sau khi chọn chuyển sang sử dụng hàm SetPixelFormat để sử dụng nó. Khi ánh xạ hệ toạ độ 3D sang 2D, OpenGL phải biết được kích cỡ của khu vực hiển thị đó .Trong hàm OnSize chúng ta sẽ thiết lập những biến đổi cần thiết khi ánh xạ 3D sang màn hình ,GDI không biết bất cứ điều gì về kích thước thứ 3. Hoàn tất việc khởi tạo .Bước tiếp theo sẽ thực thi các lệnh vẽ với OpenGL trong hàm OnDraw tuy nhiên để cho cấu trúc chương trình gọn gàng nên đặt ra các hàm vẽ riêng, ở đây sẽ tạo 2 hàm , hàm vẽ hệ toạ độ HeToaDo(CDC*pDC) và hàm vẽ khối hộp HinhHop(CDC*pDC) sau đó gọi chúng trong hàm OnDraw(CDC*pDC) để hoàn tất.

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

      Thêm thành phần Installshield for Microsoft Visual C++ 6.0

      Đối với một chương trình lớn có thể có thêm những hướng dẫn cách sử dụng và các bài mẫu, trong hộp thoại tiếp theo không bắt buộc chọn Example files hay Help files nên có thể để nó lại hoặc kích chọn Delete để xoá nó khỏi bộ đóng gói. Tuy nhiên ứng dụng muốn chạy trên các máy thông thường không cài VC++ 6.0 cũng phải có thêm các Dll hỗ trợ, chính vì vậy trong hộp thoại tiếp theo bắt buộc phải chọn ShareDll và Program File. File group sẽ đưa các file exe và dll vào trong bộ cài (ở trên chỉ là “khai báo” chứ chưa. “gộp” nó vào ) và Component sẽ ra thông báo cho hệ thống nhận các file này (ngoài ra còn có các thông tin khác ).

      Hình 3.82.Chọn InstallShield và ấn Finish để kết thúc.
      Hình 3.82.Chọn InstallShield và ấn Finish để kết thúc.