Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 143 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
143
Dung lượng
2,7 MB
Nội dung
5 Bài 1 TỔNG QUAN VỀ LẬP TRÌNH WINDOWS Không cần nói nhiều hơn, tất cả chúng ta ñều khá quen thuộc với việc sử dụng các ứng dụng trên hệ ñiều hành Microsoft Windows. Trong bài học ñầu tiên này, tôi xin giới thiệu các ñặc ñiểm chính của hệ ñiều hành này, ñồng thời cũng trình bày cách xây dựng ứng dụng cụ thể dạng Win32 Application trên công cụ Visual C++ 6.0. 1.1. LẬP TRÌNH TRÊN MICROSOFT WINDOWS Trong tất cả các môn học trước, hầu như chúng ta chỉ cài ñặt các chương trình, minh họa các thuật toán,… dưới dạng các ứng dụng xử lý tuần tự theo lô (batch-oriented) hay giao tác (transaction-oriented) gắn liền với hệ ñiều hành MS-DOS. Tuy nhiên, các ứng dụng trên Windows thì hoàn toàn khác. Vì thế, phần này sẽ tóm tắt giúp các bạn các ñặc ñiểm chính của hệ ñiều hành Windows, và cũng chính là các ñặc ñiểm của các ứng dụng khi lập trình trên môi trường này. 1.1.1. Thông ñiệp và xử lý thông ñiệp Khi chúng ta viết một chương trình dạng MS-DOS bằng ngôn ngữ C, yêu cầu duy nhất là ta phải viết một hàm main. Hệ ñiều hành gọi hàm main khi chương trình ñược thực thi, và thực hiện theo các cấu trúc lệnh ñã ñược lập trình từ trên xuống dưới. Tuy nhiên, với Windows thì khác hẳn. Hệ ñiều hành Windows cũng gọi một hàm chính là WinMain khi bắt ñầu tiến trình ñể thực hiện việc tạo lập cửa sổ ứng dụng, ứng dụng này ñược hệ ñiều hành quản lý thông qua ñịa chỉ của tiến trình và vùng nhớ ñối tượng cửa sổ. Các thao tác của người dùng - hoặc do các ñối tượng khác trên Windows - tác ñộng lên ứng dụng ñều ñược chuyển thành một dạng thông tin gọi là thông ñiệp (message) và ñược hệ ñiều hành quản lý. Hệ ñiều hành lần lượt chuyển các thông ñiệp ñến các cửa sổ nhận thao tác vừa thực hiện. Khi lập trình, các thông ñiệp này ñều ñược gởi vào hàm xử lý của cửa sổ - thường ñặt tên là WndProc ñối với cửa sổ chính của ứng dụng, và ta chỉ việc viết code ñể xử lý cho ứng dụng thông qua các giá trị thông ñiệp (tương ứng các thao tác) ñã ñược Windows ñịnh nghĩa sẵn. 1.1.2. Giao diện ñồ họa người dùng GUI Vấn ñề xử lý thông ñiệp là ñặc ñiểm quan trọng nhất, tuy nhiên khi ñề cập ñến lập trình trên Windows người ta lại thường chú ý tới ñặc trưng giao diện (visual interface) của các ứng dụng hơn. Trên môi trường Windows, các ứng dụng giao tiếp (trao ñổi thông tin) với người dùng thông 6 qua các ñối tượng trực quan như cửa sổ (window), thanh trình ñơn (menu), hộp hội thoại (dialog box), các ñối tượng ñiều khiển (controls)… Khi lập trình, chúng ta sử dụng các hàm API (Application Programming Interface), cơ chế liên kết ñộng DLL (Dynamic Link Library) và hệ thống tài nguyên (resource-based programming) của IDE (Intergrated Development Environment) ñể xây dựng giao diện các ứng dụng theo các ñịnh dạng mà Windows hỗ trợ. 1.1.3. Giao tiếp thiết bị ñồ họa GDI Khi lập trình trên MS-DOS, ñể giao tiếp với các thiết bị - ñưa dữ liệu ra vùng nhớ màn hình, cổng máy in chẳng hạn - thì ta phải biết cơ chế của các thiết bị phần cứng tương ứng, rồi ghi dữ liệu ra thẳng thiết bị. Thế nhưng, trên Windows, với sự hỗ trợ của hệ ñiều hành, các ứng dụng không cần phải truy xuất thiết bị vật lý. Dữ liệu ñược xuất ra một ñối tượng thiết bị ảo, gọi là thiết bị ngữ cảnh (device context), sau ñó thông qua chương trình ñiều khiển thiết bị ñã cài ñặt trên hệ ñiều hành (tức là các driver của các thiết bị phần cứng), dữ liệu sẽ ñược chuyển ñến các thiết bị vật lý khác nhau mà người lập trình ứng dụng trên Windows không cần phải biết về chúng. 1.1.4. Quản lý vùng nhớ và tập tin Với các phiên bản mới của hệ ñiều hành, việc quản lý các vùng nhớ và tập tin của các ứng dụng trên Windows ngày càng dễ dàng và hiệu quả hơn. Chúng ta không phải thật sự khó khăn khi cấp phát, truy xuất, giải phóng,… các khối nhớ, vì ñã có hệ ñiều hành lo giúp. Với cơ chế cấp phát và quản lý ñộng, quản lý vùng nhớ ảo và ánh xạ vùng nhớ lên hệ thống lưu trữ phụ, việc thao tác các ñối tượng vùng nhớ lớn, phức tạp giờ ñây chỉ còn là việc gọi các hàm Windows cung cấp và việc tổ chức các cấu trúc dữ liệu phú hợp cho ứng dụng mà thôi. 1.1.5. Thư viện liên kết ñộng Trên môi trường MS-DOS, các module của các ñối tượng trong mỗi chương trình chỉ ñược liên kết tĩnh trong quá trình tạo (build) ứng dụng. Trong khi trên môi trường Windows, các hàm, thư viện còn có thể ñược gọi khi chương trình ñang thực thi (run-time), gọi là cơ chế liên kết ñộng. Các tiến trình ñang thực thi có thể cùng chia sẻ các thư viện này, ñiều này giúp giảm thiểu vùng nhớ và kích thước các tập tin. Thật ra bản thân hệ ñiều hành Windows là tập hợp các thư viện liên kết ñộng, với ba ñơn vị chính là Kernel, User, và GDI liên quan ñến các hàm, thủ tục thể hiện các chức năng quản lý các tiến trình, vùng nhớ, tập tin,… (kernel), giao diện người dùng, các cửa sổ,… (user) và thiết bị ñồ họa (GDI) và các DLL gắn liền với các ứng dụng khác ñược cài ñặt trên máy tính. 1.2. ỨNG DỤNG WIN32 APPLICATION TRÊN MS VISUAL C++ 6.0 7 Sau khi nắm ñược các ñặc ñiểm chính của các ứng dụng trên môi trường hệ ñiều hành MS Windows, phần này sẽ giúp các bạn hiểu và xây dựng ứng dụng cụ thể dạng Win32 Application trên công cụ MS Visual C++ 6.0. 1.2.1. Project ứng dụng Win32 Application MS Visual C++ 6.0 hỗ trợ lập trình nhiều dạng ứng dụng khác nhau như Win32 Console Application, Win32 Application, MFC AppWizard, Win32 Dynamic Link Library,… trong ñó Win32 Application lập trình trực tiếp với các hàm API là dạng mà chúng ta sẽ tìm hiểu trong môn học này. Hình 1.1. Tạo lập project dạng Win32 Application Sử dụng Wizard của Visual C++ 6.0, chúng ta tạo lập project ñầu tiên như sau: 1 Bước 1: Từ menu File, chọn menu item New… Ctrl+N. 2 Bước 2: Trên hộp thoại New chọn dạng Projects Win32 Apllication, gõ tên project (Project name) và ñường dẫn (Location) cần tạo – xem hình 1.1. Chọn OK. 3 Bước 3: Visual C hỗ trợ cho phép tạo lập một số mẫu project. Ta chọn dạng A typical “Hello World!” application – xem hình 1.2. Chọn Finish. Với cách chọn này, Visual C++ 6.0 phát sinh sẵn một số file code, tài nguyên – kết quả thể hiện trên hình 1.3. Sau khi chọn OK ñể kết thúc việc tạo project mới, chúng ta sẽ tìm hiểu giao diện của IDE MS Visual C++ 6.0 và cách viết chương trình trên công cụ này. 8 Hình 1.2. Chọn project A typical “Hello World!” application 1.2.2. Các thành phần chính trên IDE MS Visual C++ 6.0 ðược xây dựng dựa theo công cụ Visual Workbench, IDE này gồm các cửa sổ, thanh công cụ, editor có thể cấu hình,… kết hợp hài hòa với nhau giúp các lập trình viên dễ dàng biên soạn code, tạo lập các tài nguyên, biên dịch, debug lỗi…. 9 Hình 1.3. Thông báo sau khi tạo project của Visual C++ 6.0 Nếu ñã từng sử dụng các IDE, có lẽ bạn sẽ dễ dàng ñể hiểu cách tổ chức và hoạt ñộng của Visual C++ 6.0. Tuy nhiên, nếu mới lập trình trên một IDE như thế này thì bạn cần phải hiểu project là gì. Một project là một tập hợp các file source có liên hệ với nhau mà trình biên dịch có thể biên dịch và liên kết ñể tạo các file khả thi dạng Windows hoặc các DLL. Các file source trong mỗi project thường ñược lưu trữ trong một thư mục riêng biệt. Ngoài ra, một project còn phụ thuộc vào một số file liên kết như file header, file thư viện… khác. 1 Cửa sổ Workspace Mặc ñịnh thì cửa sổ bên trái mà chúng ta thấy trên IDE Visual C++ 6.0 là một treeview cho phép chúng ta chọn các tập tin source code, resource,… ñể soạn thảo. 10 Hình 1.4. Giao diện của MS Visual C++ 6.0 FileView liệt kê các tập tin trong project, tổ chức như cây thư mục phân theo nhóm file chức năng: các file source code (.c hoặc .cpp), các file header (.h và .hpp), các file resource như icon (.ico), bitmap (.bmp),… ResourceView liệt kê các tài nguyên của ứng dụng. Visual C++ 6.0 hỗ trợ các công cụ trực quan cho phép các lập trình viên thao tác các resource một cách hiệu quả. Khi chọn menu, hộp thoại,… IDE sẽ thể hiện các editor tương ứng. ClassView giúp lập trình viên dễ dàng chuyển ñến các lớp ñối tượng (ñặc biệt cho project MFC), các hàm, các biến trong project. 2 Cửa sổ soạn thảo source code Visual C++ 6.0 cung cấp một cửa sổ soạn code khá tuyệt vời, hỗ trợ nhiều chức năng khi lập trình như thể hiện màu chữ theo dạng code, chế ñộ tự ñộng chuyển tab,… và nhất là chức năng AutoComplete (tự ñộng thể hiện các tên hàm, biến,… ñã ñịnh nghĩa). 3 Cửa sổ thể hiện kết quả build (Output window) Khi lập trình, việc biên dịch, sửa lỗi,… là thao tác rất quan trọng. Trình biên dịch kiểm tra các lỗi cú pháp, ngữ nghĩa,… và xuất các thông báo liên quan cho lập trình viên. Căn cứ vào thông báo lỗi, các lập trình viên có thể lần theo các vết thông báo ñể sửa lại chương trình 4 Các cửa sổ khác trên MS Visual C++ 6.0 11 Ngoài các cửa sổ vừa ñề cập ở trên, Visual C++ 6.0 còn cung cấp các ñối tượng trực quan khác ñể hỗ trợ các lập trình viên như thanh WizardBar, MenuBar, ToolsBar,… Các cửa sổ trên IDE này ñều có thể kéo trôi nổi (docking) và sắp xếp theo ý thích của người sử dụng. 1.2.3. Quy trình build ứng dụng Quy trình build project tạo file khả thi dạng EXE hoặc DLL ñược Visual C++ thực hiện theo hai công ñoạn chính - xem hình 1.5 - như sau: Hình 1.5. Quy trình build một project ứng dụng - Biên dịch (compile) các file source code và resource sang dạng mã trung gian OBJ, RES,… - Liên kết (link) các file OBJ, RES với các file thư viện Windows và run-time ñể tạo file khả thi. Với project ñơn giản ñã tạo lập ở trên, chúng ta có thể thực hành xem kết quả build file BaiTap.exe. Bằng cách chọn chức năng “Build BaiTap.exe F7” từ menu Build, Visual C++ sẽ thực hiện biên dịch và liên kết các file có trong project và tạo các file OBJ, RES, EXE, tương ứng. Tuỳ theo dạng build ñược cấu hình cho project (Win32 Release hoặc Win32 Debug), các file mã phát sinh trong quá trình build sẽ ñược tạo ra trong một thư mục con mặc ñịnh có tên là Release hoặc Debug - nằm trong thư mục chứa các file nguồn của project. Nếu tạo lập như ở trên, chúng ta sẽ có các file mã phát sinh trong thư mục D:\Study\BaiTap\Debug chẳng hạn. ðể ý là khi copy code của một project ñem sang một máy tính khác ñể build, chúng ta không cần phải copy thư mục này (vì khá lớn)!!! Hình 1.6. Thể hiện của ứng dụng BaiTap.exe 12 Nếu quá trình build thành công – ñược thông báo trên cửa sổ Output, xem phần 1.2.2. - chúng ta có thể xem kết quả thực hiện bằng cách chọn chức năng Execute Program (Ctrl+F5). Kết quả project này thể hiện như ở hình 1.6. 1.3. PHÂN TÍCH SOURCE CODE CỦA PROJECT Trong project BaiTap dạng Win32 Application ñược tạo như ở trên, file BaiTap.cpp (workspace FileView) chính là file source chính cài ñặt các thao tác tạo lập và xử lý các chức năng của cửa sổ ứng dụng này. Dưới ñây là phần code do MS Visual C++ 6.0 phát sinh, với các chú thích ñược viết lại bằng tiếng Việt cho dễ hiểu. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 // BaiTap.cpp : Tập tin cài ñặt chính của ứng dụng BaiTap #include "stdafx.h" #include "resource.h" #define MAX_LOADSTRING 100 // ðịnh nghĩa các biến toàn cục HINSTANCE hInst; // Instance của ứng dụng TCHAR szTitle[MAX_LOADSTRING]; // Thể hiện trên thanh tiêu ñề TCHAR szWindowClass[MAX_LOADSTRING]; // Tên lớp cửa sổ // ðịnh nghĩa trước các hàm sẽ ñược gọi trong module này ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // Các biến cục bộ trong hàm WinMain MSG msg; // Biến kiểu dữ liệu thông ñiệp HACCEL hAccelTable; // Bảng phím nóng // Khởi tạo bằng cách nạp các chuỗi từ resource (tài nguyên) LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_BAITAP, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance); // Thực hiện việc khởi tạo ứng dụng if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } Nạp bảng phím nóng từ resource hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_BAITAP); // Vòng lặp xử lý thông ñiệp của ứng dụng – xem lại phần 1.1.1 while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return msg.wParam; } 13 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 // Hàm MyRegisterClass() - ðăng ký một lớp cửa sổ. ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEX wcex; // Lớp cửa sổ wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = (WNDPROC)WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_BAITAP); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = (LPCSTR)IDC_BAITAP; wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL); return RegisterClassEx(&wcex); } // Hàm InitInstance(HANDLE, int) – Lưu ñịnh danh ứng dụng và tạo cửa sổ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd; // Biến ñịnh danh cửa sổ hInst = hInstance; // Lưu ñịnh danh ứng dụng vào biến toàn cục ở trên // Tạo lập cửa sổ hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (!hWnd) { return FALSE; } // Hiển thị cửa sổ với dạng hiển thị là nCmdShow ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; } // Hàm WndProc(HWND, unsigned, WORD, LONG) // Hàm xử lý các thông ñiệp sau của cửa sổ ứng dụng: // WM_COMMAND - Xử lý các thao tác liên quan ñến menu // WM_PAINT - Xử lý thao tác vẽ lại cửa sổ // WM_DESTROY - Gởi thông ñiệp kết thúc ứng dụng khi ñóng cửa sổ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { // ðịnh nghĩa các biến cục bộ int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; TCHAR szHello[MAX_LOADSTRING]; LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING); switch (message) { case WM_COMMAND: // Thông ñiệp liên quan tới menu và các control wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Chuyển thao tác ứng với menu item ñược kích hoạt switch (wmId) { [...]... u Giáo trình này ch giúp c c b n n m ñư c cách l p trình trên Windows m t c ch c b n Và ñây không ph i là tài li u tham chi u Sau khi n m ñư c c c ñi m chính, khi l p trình, c c b n nên tham chi u v i thư vi n MSDN c a Microsoft ñ c nh ng hư ng d n ñ y ñ nh t Và như v y, n u ñã làm quen ñư c v i vi c l p trình c c ng d ng trên Windows ch v i c c hàm API, c c b n c th t tìm hi u ñ c th l p trình. .. th cho c c macro ñư c phát sinh kh c nhau cho c c project kh c nhau Hơn n a, chúng luôn là c c giá tr kh c nhau cho c c macro kh c nhau Và vì th n u chúng ta so n th o chúng dư i d ng text, c n ph i chú ý ñ tránh trư ng h p trùng l p giá tr , b i trong c c trư ng h p này khi c i ñ t code cho thao t c c c ñ i tư ng liên quan c th d n ñ n c c x lý tương ng không chính x c 26 Hình 2.5 Macro và giá tr c. .. t c v i c ng c tr c quan c a MS Visual C+ + Hình 2.9 Thao t c b ng phím t t trên Visual C+ + 6.0 T c a s workspace ResourceView c a project MyNotepad, ta ch n m c Accelerator, r i ch n ñ i tư ng IDC_MYNOTEPAD Visual C+ + s li t kê cho chúng ta c c phím t t nào ñã ñư c ñ nh nghĩa, và ta ch vi c thêm hay thay ñ i c c giá tr c a chúng Ta c th thêm m t phím t t b ng c ch click vào m t m c tr ng trên b ng... b ng c ch gõ c c dòng l nh theo c u tr c c a menu trong t p tin RC Thông thư ng, c ch này ít dùng vì khá ph c t p, khó nh và khó qu n lý c c giá tr ch danh c a c c item mà ta ph i ñ nh nghĩa Chúng ta s không tìm hi u v c ch thao t c này trong môn h c, tuy nhiên, c c b n c n tham kh o c u tr c có s n c a chúng sau khi t o l p tr c quan ( c ch 2) ñ c th x lý khi c l i v ph n code tương ng 2 C ch 2:... khi n (control) như button, edit, combo box,… trên môi trư ng c ng c MS Visual C+ + 6.0 2.1 C CH L P TRÌNH S D NG TÀI NGUYÊN Khi s d ng c c ng d ng trên Windows, ch c ch n c c b n d dàng nh n ra chúng c c ng nh ng ñ c trưng giao di n c ng như c ch x lý c c ñ i tư ng giao di n này Ví d , khi mu n th c hi n m t c ng vi c nào ñó, ngư i ta thư ng ch n theo t ng nhóm c c thao t c ñã ñư c ñ nh trư c trên. .. Graphical User Interface) chính là ñ c ñi m làm cho c c ng d ng trên MS Windows tr nên thân thi n, d s d ng… Và c ng chính nh ñ c ñi m này mà c c chương trình trên máy tính tr nên g n gũi và th c t hơn r t nhi u so v i c c ng d ng trư c ñây trên MS-DOS Bài h c này s giúp c c b n t o l p c ng như l p trình x lý cho c c ñ i tư ng giao di n quen thu c trên Windows như thanh trình ñơn (menu), c c ñ i tư... i chuy n cho hàm WndProc x lý) là quan tr ng nh t c c bài h c ti p theo chúng ta s tìm hi u l n lư t c c ñ c ñi m nêu trên qua c c ki n th c lý thuy t c b n, và áp d ng trên c c ví d c th 1.5 C U H I ÔN T P – BÀI T P 1.5.1 Trình bày c c ñ c ñi m chính c a c c ng d ng trên MS Windows? C c ñ c ñi m này kh c v i trên môi trư ng MS-DOS như th nào? 1.5.2 Cho bi t quy trình biên d ch và liên k t ñ t o file... ñư c xây d ng sao cho c c l p trình viên khi l p trình ch c n th c hi n c c thao t c khá ñơn gi n là ñưa thông tin c c ñ i tư ng c n t o l p theo c c m u (template) ñã ñư c ñ nh nghĩa trư c Cơ ch này g i là l p trình s d ng tài nguyên (resource-based programming) 2.1.1 C a s workspace ResourceView Trong c c project ng d ng trên Windows vi t b ng C, tài nguyên ñư c ñ nh nghĩa trong c c t p tin RC (resource)... i c c môn h c kh c thì môn h c này ñòi h i c c b n th c hành nhi u Sau khi n m ñư c t ng ñ c ñi m chính c a c c ng d ng trên Windows, chúng ta c n ph i c i ñ t chúng thông qua m t s ví d , bài t p – t ñó s d dàng hi u rõ l i v lý thuy t, và như v y c th xây d ng c c ng d ng kh c m t c ch nhanh chóng Th hai là v n ñ áp d ng lý thuy t vào vi c xây d ng c c ng d ng c th , vi c tham kh o c c tài li u Giáo. .. ñ xem c c macro ñư c ñ nh nghĩa c a c c tài nguyên trong t p tin BaiTap.rc ta c th xem tr c quan qua s h tr c a MS Visual C+ + 6.0 B ng c ch click chu t ph i (m c ñ nh) lên “BaiTap resources” trên ResourceView – hình 2.3 – ta ch n ti p “Resouce Includes…” ñ xem c c thông tin v t p tin resource.h – hình 2.4, ho c ch n “Resource Symbols…” ñ xem giá tr c c macro ñã ñư c ñ nh nghĩa – hình 2.5 2.2 TRÌNH . Dựa trên ñ c ñiểm này, c c công c soạn thảo và biên dịch ñư c xây dựng sao cho c c lập trình viên khi lập trình chỉ c n th c hiện c c thao t c khá ñơn giản là ñưa thông tin c c ñối tượng c n. .hpp), c c file resource như icon (.ico), bitmap (.bmp),… ResourceView liệt kê c c tài nguyên c a ứng dụng. Visual C+ + 6.0 hỗ trợ c c công c tr c quan cho phép c c lập trình viên thao t c c c. viên c thể lần theo c c vết thông báo ñể sửa lại chương trình 4 C c cửa sổ kh c trên MS Visual C+ + 6.0 11 Ngoài c c cửa sổ vừa ñề c p ở trên, Visual C+ + 6.0 c n cung c p c c ñối tượng trực