NGÔN NGỮ LẬP TRÌNH LẬP TRÌNH C TRÊN WINDOWS
Trang 1
LẬP TRÌNH C TRÊN
WINDOWS
NGÔN NGỮ LẬP TRÌNH LẬP TRÌNH C TRÊN WINDOWS
Trang 2
Chương 1
TỔNG QUAN LẬP TRÌNH C TRÊN WINDOWS
1.1. MỞ ĐẦU
Để lập trình trên Microsoft Windows®, chúng ta cần nắm được các đặc điểm cơ bản nhất
của hệ điều hành này. Chương này sẽ giới thiệu khái quát các đặc điểm hệ điều hành Microsoft
Windows, các vấn đề liên quan đến lập trình bằng ngôn ngữ C, đồng thời đưa ra một chương
trình mẫu làm sườn cho các chương trình được viết sau này.
Trong phần đầu, chúng ta tìm hiểu sơ lược lịch sử phát triển của hệ điều hành Microsoft
Windows® và những đặc điểm nền tảng của Windows.
Phần tiếp theo sẽ trình bày những khái niệm và yêu cầu căn bản của việc lập trình C trên
Windows. Ngoài ra, phần này cũng giới thiệu các cơ chế và các công cụ mà hệ điều hành cung
cấp cho người lập trình hay người phát triển các ứng dụng trên Windows.
Cuối chương là phần xây dựng một chương trình đơn giản nhất trên Windows. Chương
trình này được xem như là khuôn mẫu của một chương trình ứng dụng điển hình, và hầu hết các
đoạn chương trình được viết minh họa trong sách đều lấy chương trình này làm khung sườn để
phát triển cho phù hợp với từng yêu cầu. Thêm vào đó, một số kiểu dữ liệu mới được định nghĩa
trên Windows và những qui ước về cách đặt tên biến cũng được giới thiệu trong phần này.
Phần chi tiết và chuyên sâu hơn của việc lập trình bằng ngôn ngữ C trên môi trường
Windows sẽ được trình bày trong các chương tiếp theo.
1.2. HỆ ĐIỀU HÀNH MICROSOFT WINDOWS
1.2.1. Giới thiệu
Giữa thập niên 80, công ty phần mềm máy tính Microsoft công bố phiên bản đầu tiên của
dòng hệ điều hành Windows là Microsoft Windows® 1.0. Đây là hệ điều hành dùng giao diện
đồ họa khác với giao diện ký tự (text hay console) của MS-DOS. Tuy nhiên phải đến phiên bản
thứ hai (Windows 2.0 - tháng 11 năm 1987) thì mới có bước cải tiến đáng kể, đó là sự mở rộng
giao tiếp giữa bàn phím và thiết bị chuột và giao diện đồ họa (GUI-Graphic User Interface) như
trình đơn (menu) và hộp thoại (dialog). Trong phiên bản này Windows chỉ yêu cầu bộ vi xử lý
Intel 8086 hay 8088 chạy ở real-mode để truy xuất 1 megabyte bộ nhớ.
Tháng 5 năm 1990, Microsoft công bố phiên bản tiếp theo là Windows 3.0. Sự thay đổi
lớn trong phiên bản này là Windows 3.0 hỗ trợ protected-mode 16 bit của các bộ vi xử lý 286,
386, và 486 của Intel. Sự thay đổi này cho phép các ứng dụng trên Windows truy xuất 16
megabyte bộ nhớ. Tiếp bước với sự phát triển là phiên bản Windows 3.1 ra đời năm 1992,
Microsoft đưa công nghệ Font TrueType, âm nhạc (multimedia), liên kết và nhúng đối tượng
(OLE- Object Linking and Embedding), và đưa ra các hộp thoại chung đã được chuẩn hóa.
NGÔN NGỮ LẬP TRÌNH LẬP TRÌNH C TRÊN WINDOWS
Trang 3
Trong sự phát triển mạnh mẽ của những thập niên 90, Microsoft công bố tiếp dòng hệ
điều hành Windows với ứng dụng công nghệ mới (1993). Hệ điều hành này lấy tên là
Windows® NT® (Windows New Technology), đây là phiên bản hệ điều hành đầu tiên của
Windows hỗ trợ 32 bit cho bộ xử lý 386, 486 và Pentium. Trong hệ điều hành này thì các ứng
dụng phải truy xuất bộ nhớ với địa chỉ là 32-bit và các tập lệnh hay chỉ thị 32-bit. Ngoài ra
Windows NT cũng được thiết kế để chạy các bộ vi xử lý (CPU) khác ngoài Intel và có thể chạy
trên các máy trạm (workstation).
Hệ điều hành Windows 95 được công bố năm 1995 cũng là một hệ điều hành 32-bit cho
Intel 386 trở về sau. Tuy thiếu tính bảo mật như Windows NT và việc thích nghi với máy trạm
công nghệ RISC, nhưng bù lại hệ điều hành này yêu cầu phần cứng không cao.
Song song với sự phát triển phần mềm thì công nghệ phần cứng cũng phát triển không
kém. Để tận dụng sức mạnh của phần cứng thì các thế hệ Windows tiếp theo ngày càng hoàn
thiện hơn. Như Windows 98 phát triển từ Window 95 và có nhiều cải thiện như hiệu năng làm
việc, hỗ trợ các thiết bị phần cứng tốt hơn, và cuối cùng là việc tích hợp chặt chẽ với Internet và
Word Wide Web.
Windows 2000 là hệ điều hành được xem là ổn định và tốt của dòng Windows, phiên bản
này tăng cường các tính năng bảo mật thích hợp trong mội trường mạng và giao diện đẹp.
1.2.2. Đặc điểm chung của hệ điều hành Microsoft Windows
Windows là một hệ điều hành sử dụng giao tiếp người dùng đồ họa (GUI), hay còn gọi là
hệ điều hành trực quan (Visual interface). GUI sử dụng đồ họa dựa trên màn hình ảnh nhị phân
(Bitmapped video display). Do đó tận dụng được tài nguyên thực của màn hình, và cung cấp một
môi trường giàu tính trực quan và sinh động.
Windows không đơn điệu như MS-DOS (hay một số hệ điều hành giao diện console) mà
màn hình được sử dụng chỉ để thể hiện chuỗi ký tự, do người dùng gõ từ bàn phím (keyboard)
hay để xuất thông tin dạng văn bản. Trong giao diện người dùng đồ họa, màn hình giao tiếp với
người sử dụng đa dạng hơn, người dùng có thể nhập dữ liệu thông qua chuột bằng cách nhấn vào
các nút nhấn (button) các hôp chọn (combo box)…thiết bị bây giờ được nhập, có thể là bàn phím
và thiết bị chuột (mouse device). Thiết bị chuột là một thiết bị định vị trên màn hình, sử dụng
thiết bị chuột người dùng có thể nhập dữ liệu một cách trực quan bằng cách kích hoạt một nút
lệnh, hay làm việc với các đối tượng đồ họa liên quan đến tọa độ trên màn hình.
Để giao tiếp trong môi trường đồ họa, Windows đưa ra một số các thành phần gọi là các
điều khiển chung (common control), các điều khiển chung là các đối tượng được đưa vào trong
hộp thoại để giao tiếp với người dùng. Bao gồm : hộp văn bản (text box), nút nhấn (button), nút
chọn (check box), hộp danh sách (list box), hộp chọn (combo box)…
Thật ra một ứng dụng trên Windows không phải là quá phức tạp vì chúng có hình thức
chung. Chương trình ứng dụng thuờng chiếm một phạm vi hình chữ nhật trên màn hình gọi là
một cửa sổ. Trên cùng của mỗi cửa sổ là thanh tiêu đề (title bar). Các chức năng của chương
trình thì được liệt kê trong thực đơn lựa chọn của chương trình (menu) , hay xuất hiện dưới dạng
trực quan hơn là các thanh công cụ (toolbar). Các thanh công cụ này chứa các chức năng được
sử dụng thường xuyên trong thực đơn để giảm thời gian cho người dùng phải mở thực đơn và
NGÔN NGỮ LẬP TRÌNH LẬP TRÌNH C TRÊN WINDOWS
Trang 4
chọn. Thông thường khi cần lấy thông tin hay cung cấp thông tin cho người dùng thì một ứng
dụng sẽ đưa ra một hộp thoại, trong hộp thoại này sẽ chứa các điều khiển chung để giao tiếp với
người dùng. Windows cũng ra tạo một số các hộp thoại chuẩn như Open Files, và một số hộp
thoại tương tự như nhau.
Windows là một hệ điều hành đa nhiệm, tùy thuộc vào bộ nhớ mà ta có thể chạy nhiều
ứng dụng cùng một lúc, và cũng có thể đồng thời chuyển qua lại giữa các ứng dụng và thực thi
chúng. Trong các phiên bản của Windows® 98 và NT® trở về sau, các chương trình ứng dụng tự
bản thân chúng chia thành nhiều tiểu trình (thread) để xử lý và với tốc độ xử lý nhanh tạo cảm
giác những chương trình ứng dụng này chạy đồng thời với nhau.
Trong Windows, chương trình ứng dụng khi thực thi được chia sẻ những thủ tục mà
Windows cung cấp sẵn, các tập tin cung cấp những thủ tục trên được gọi là thư viện liên kết
động (Dynamic Link Libraries - DLL). Windows có cơ chế liên kết những chương trình ứng
dụng với các thủ tực được cung cấp trong thư viện liên kết động.
Khả năng tương thích của Windows cũng rất cao. Các chương trình ứng dụng được viết
cho Windows không truy xuất trực tiếp phần cứng của những thiết bị đồ hoạ như màn hình và
máy in. Mà thay vào đó, hệ điều hành cung cấp một ngôn ngữ lập trình đồ họa (gọi là Giao tiếp
thiết bị đồ hoạ - Graphic Device Interface - GDI) cho phép hiển thị những đối tượng đồ họa một
cách dễ dàng. Nhờ vậy một ứng dụng viết cho Windows sẽ chạy với bất cứ thiết bị màn hình nào
hay bất kì máy in, miễn là đã cài đặt trình điều khiển thiết bị hỗ trợ cho Windows. Chương trình
ứng dụng không quan tâm đến kiểu thiết bị kết nối với hệ thống.
Như giới thiệu ở phần trên khái niệm liên kết động là thành phần quan trọng của
Windows, nó được xem như là hạt nhân của hệ điều hành, vì bản thân của Windows là các tập
thư viện liên kết động. Windows cung cấp rất nhiều hàm cho những chương trình ứng dụng để
cài đặt giao diện người dùng và hiển thị văn bản hay đồ họa trên màn hình. Những hàm này được
cài đặt trong thư viện liên kết động hay còn gọi là DLL. Đó là các tập tin có dạng phần mở rộng
là *.DLL hay *.EXE, hầu hết được chứa trong thư mục \Windows\System,
\Windows\system32 của Windows® 98 và các thư mục \WinNT\System, \WinNT\System32
của Windows® NT®.
Trong các phiên bản sau này, hệ thống liên kết động được tạo ra rất nhiều, tuy nhiên, hầu
hết các hàm được gọi trong thư viện này phân thành 3 đơn vị sau: Kernel, User, và GDI.
Kernel cung cấp các hàm và thủ tục mà một hạt nhân hệ điều hành truyền thống quản lý,
như quản lý bộ nhớ, xuất nhập tập tin và tác vụ. Thư viện này được cài đặt trong tập tin
KRNL386.EXE 16 bit và KERNEL32.DLL 32 bit.
User quản lý giao diện người dùng, cài đặt tất cả khung cửa sổ ở mức luận lý. Thư viện
User được cài đặt trong tập tin USER.EXE 16 bit và USER32.DLL 32 bit.
GDI cung cấp toàn bộ giao diện thiết bị đồ hoạ (Graphics Device Interface), cho phép
chương trình ứng dụng hiển thị văn bản và đồ hoạ trên các thiết bị xuất phần cứng như màn hình
và máy in.
NGÔN NGỮ LẬP TRÌNH LẬP TRÌNH C TRÊN WINDOWS
Trang 5
Trong Windows 98, thư viện liên kết động chứa khoảng vài ngàn hàm, mỗi hàm có tên
đặc tả, ví dụ CreateWindow, hàm này dùng để tạo một cửa sổ cho ứng dụng. Khi sử dụng các
hàm mà Windows cung cấp cho thì các ứng dụng phải khai báo trong các tập tin tiêu đề .h hay
.hpp (header file).
Trong một chương trình Windows, có sự khác biệt khi ta gọi một hàm của thư viện C và
một hàm của Windows hay thư viện liên kết động cung cấp. Đó là khi biên dịch mã máy, các
hàm thư viện C sẽ được liên kết thành mã chương trình. Trong khi các hàm Windows sẽ được
gọi khi chương trình cần dùng đến chứ không liên kết vào chương trình. Để thực hiện được các
lời gọi này thì một chương trình Windows *.EXE luôn chứa một tham chiếu đến thư viện liên kết
động khác mà nó cần dùng. Khi đó, một chương trình Windows được nạp vào bộ nhớ sẽ tạo con
trỏ tham chiếu đến những hàm thư viện DLL mà chương trình dùng, nếu thư viện này chưa được
nạp vào bộ nhớ trước đó thì bây giờ sẽ được nạp.
1.3. LẬP TRÌNH TRÊN MICROSOFT WINDOWS
1.3.1. Đặc điểm chung
Windows là hệ điều hành đồ họa trực quan, do dó các tài nguyên của hệ thống cung cấp
rất đa dạng đòi hỏi người lập trình phải nghiên cứu rất nhiều để phát hay hết sức mạnh của hệ
điều hành.
Theo như những mục đích tiếp cận của các nhà lập trình thì các ứng dụng trên Windows
phải hết sức thân thiện với người dùng thông qua giao diện đồ họa sẵn có của Windows. Về lý
thuyết thì một người dùng làm việc được với một ứng dụng của Windows thì có thể làm việc
được với những ứng dụng khác. Nhưng trong thực tế để sử dụng một ứng dụng cho đạt hiệu quả
cao trong Windows thì cần phải có một số huấn luyện trợ giúp hay tối thiểu thì phải cho biết
chương trình ứng dụng làm việc như thế nào.
Đa số các ứng dụng trong Windows đều có chung một giao diện tương tác với người
dùng giống nhau. Ví dụ như các ứng dụng trong Windows đa số đều có thanh thực đơn chứa các
mục như : File, Edit, Tool, Help… Và trong hộp thoại thì thường chứa các phần tử điều khiển
chung như : Edit Control, Button Control, Checkbox….
1.3.2. Sự khác biệt với lập trình trên MS-DOS
Khi mới bước vào lập trình trên Windows đa số người học rất lạ lẫm, nhất là những
người đã từng làm việc với MS-DOS. Do MS-DOS là hệ điều hành đơn nhiệm và giao tiếp qua
giao diện console. Nên khi viết chương trình không phức tạp.
Còn đối với Windows người lập trình sẽ làm việc với bộ công cụ lập trình đồ họa đa dạng
cùng với cách xử lý đa nhiệm, đa luồng của Windows. Vì vậy việc lập trình trên Windows sẽ
giúp cho người lập trình đỡ nhàm chán với giao diện console của MS-DOS. Việc cố gắng phát
huy các sức mạnh tài nguyên của Windows sẽ làm cho những ứng dụng càng mạnh mẽ, đa dạng,
thân thiện, và dễ sử dụng.
1.3.3. Một số yêu cầu đối với người lập trình