Search…

Lập Trình Win32 API - Phần 1: Tổng Quan

18/09/20203 min read
Khởi tạo project dụng Win32 API xây dựng ứng dụng giao diện Windows Form với C++.

Win32 API là gì?

API viết tắt của Application Programming Interface -  Giao diện lập trình ứng dụng. Là các phương thức, giao thức kết nối với các thư viện và ứng dụng. 

Win32 viết tắt của Windows 32-bit, cung cấp một số hàm, thủ tục giúp tạo ra một chương trình.

Các thuật ngữ 

  • Handle: quản lý một đối tượng cụ thể, thao tác với đối tượng đó thông qua handle.
  • Window: giao diện cửa sổ của một "Control", trong các ứng dụng khác có thể là khái niệm Control (button, label, ...), với Win32, Window chính là tên gọi chung.
  • Message:  thông điệp gửi đến máy tính qua các thao tác trên máy như click chuột, nhấn bàn phím,...
  • Menu: thể hiện một danh sách đối tượng
  • Queue: cấu trúc dữ liệu tổ chức theo nguyên tắc First-In-First-Out.

Hướng dẫn

Bài viết hướng dẫn tạo một cửa sổ như sau

Demo tạo giao diện Winform bằng Win32API

Tạo project 

Tạo một Empty Project, các hình ảnh sau sử dụng Visual Studio 2008, có thể làm tương tự với Visual Studio 2019 hoặc các phiên bản khác.

Vào File -> New -> Project hoặc dùng tổ hợp phím Ctrl + Shift + N

Tạo empty project trong Visual Studio

Vào mục General, chọn Empty project (với VS2013, chọn Visual C++ -> General -> Empty project). Sau khi chọn xong, đặt tên cho project, cụ thể ở đây là win32_01_VS2008.

Đặt tên new project trong Visual Studio

Trên thanh Solution Explorer nằm bên tay trái (hoặc chọn View -> Solution Explorer).

Nhấn chuột phải vào Source Files -> Add -> New Item.

Ở Categories, chọn Visual C++ -> Code -> C++ file (.cpp) và đặt tên cho nó. Ở đây là WinMain, nhằm phân biệt với main.cpp khi thao tác trên ứng dụng Console.

Thao tác trên WinMain

Tạo file WinMain.cpp với nội dung như sau.

#include <Windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	MessageBox(NULL, "Text of stdio.vn", "Caption of STDIO.VN", MB_OK);
	return 0;
}

Trong đoạn code trên:

  • Windows.h: Thư viện Win32 API mà windows cung cấp.
  • int WinMain(): Tương tự như hàm main() trước đây, nhưng thể hiện ra window.

Phân tích các thành phần trong WinMain:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
  • HINSTANCE hInstance: Quản lý việc thực thi của chương trình, nó quản lý tài nguyên của chương trình đang cài đặt, cụ thể là file .exe trong hệ thống (tìm hiểu sau)
  • HINSTANCE hPrevInstance: Con trỏ trỏ đến việc thực thi trước đó.
  • LPSTR lpCmdLine: Command line arguments, chuỗi ký tự bình thường, không được chứa tên chương trình
  • int nCmdShow: 1 số nguyên để cung cấp cho hàm ShowWindow().
  • Hàm MessageBox(HWND hwnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType): Hộp tin nhắn từ hệ thống, thông tin hệ thống gửi đến người dùng:
    • hwnd: Con trỏ trỏ vào một window nào đó.
    • lpText: Đoạn văn bản thể hiện ở thân MessageBox.
    • lpCaption: Tương tự lpText nhưng là văn bản nằm ở trên thanh trên cùng.
    • uType: Thể hiện kiểu của MessageBox, ví dụ như ở đây là MB_OK. Trỏ vào MB_OK, đây là một con số (0x00000000L). Trong thư viện windows, thư viện định nghĩa MB_OK giúp dễ nhớ hơn.

Kết quả

Khi theo dõi loạt bài viết sau đây, sẽ bắt gặp vài loại biến khác lạ như UINT  định nghĩa của kiểu unsigned int – số nguyên không dấu hay LPSTR cho chuỗi char*, ...

Download project demo Win32 hoàn chỉnh

Bài chung series

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024