Nội dung• Cấu hình ứng dụng • Thao tác với chuỗi • Tập tin và thư mục • Các vấn đề liên quan đến giao diện • Nội dung nâng cao... Ánh xạ hàm xử lí• Trích nội dung file windowsX.h – Macro
Trang 1Seminar Lập trình Windows
Total CommanderWindows Explorer
Ngô Ngọc Đăng Khoa - Trần Duy Quang
Trang 2Nội dung
• Cấu hình ứng dụng
• Thao tác với chuỗi
• Tập tin và thư mục
• Các vấn đề liên quan đến giao diện
• Nội dung nâng cao
Trang 3Cấu hình ứng dụng
Trang 4Triển khai ứng dụng
• Chọn chế độ build là release
• Trên máy triển khai cần cài đặt sẵn
– Microsoft Visual C++ Redistributable Package – http://www.microsoft.com/downloads/en/conf irmation.aspx?familyId=32bc1bee-a3f9-4c13- 9c99-220b62a191ee&displayLang=en
Trang 5XP Style
• Include commctl.h
• Thêm lời gọi hàm InitCommonControls()
• Bổ sung thư viện
Trang 6XP Style
• Thêm vào project tập tin manifest
– Tên không quan trọng
– Có nội dung xml
Trang 7Ánh xạ hàm với sự kiện xử lí
• Mục đích
– Thay code switch tăng tính dễ đọc
• Include <windowsX.h>
– Tìm trong file này những hàm muốn ánh xạ
– Khai báo ở đầu rồi sử dụng
07/11/2024 Seminar C4W - Bài tập 1 7
Trang 8Ánh xạ hàm xử lí
• Trích nội dung file windowsX.h
– Macro ánh xạ kiểu hàm cho thông điệp
WM_CREATE
– Copy khai báo hàm ta có
Trang 9Thao tác với chuỗi
Trang 10Các kiểu dữ liệu chuỗi
• char, wchar_t, TCHAR, WCHAR
• TCHAR*, WCHAR*, LPTSTR, LPWSTR
• LPCTSTR, LPCWSTR
• Lệnh gán chuỗi mới = _T(“abc”) cho biến nào là hợp lệ?
Trang 12Thao tác với chuỗi – Cơ bản
• Nên dùng các hàm thao tác chuỗi Unicode (bắt đầu bằng w)
• wcslen: lấy độ dài chuỗi
• wcscpy: copy một chuỗi
• wcscat: nối hai chuỗi
• wcsdup: cấp phát vùng nhớ mới chứa
chuỗi và copy vào
Trang 13Cách nối hai chuỗi
• Lấy độ dài của hai chuỗi
• Cấp phát vùng nhớ
• Copy và nối chuỗi
07/11/2024 Seminar C4W - Bài tập 1 13
Trang 14Thao tác với chuỗi – So sánh
• wcscmp: so sánh hai chuỗi
• wcsicmp: so sánh hai chuỗi (ko phân biệt hoa thường)
• wcschr: tìm kí tự trong chuỗi
Trang 15Thao tác chuỗi – Chuyển đổi
• wcstok: tách thành các chuỗi con
• wtoi: chuyển sang kiểu integer
• wtol: chuyển sang kiểu long
• wtod: chuyển sang double
8 9 10 2
07/11/2024 Seminar C4W - Bài tập 1 15
Trang 16Tập tin và thư mục
Trang 18Lấy các ổ đĩa
• Dùng hàm GetLogicalDriveStrings
Trang 19Thông tin ổ đĩa
• int type = GetDriveType(“C:\”); // Loại
Trang 20Lấy các tập tin và thư mục con
• Sử dụng FindFirstFile và FindNextFile
Trang 21Các chú ý với thư mục
– : chỉ chính thư mục đang truy xuất
– : thư mục cha
thể đặt tên
• Tên thư mục không vượt quá 245 kí tự
tự (Kí tự NULL kết thúc chuỗi)
07/11/2024 Seminar C4W - Bài tập 1 21
Trang 22Tạo tập tin và thư mục
• CreateDirectory(L”C:\\Test”, NULL);
• CreateFile
Trang 24• CopyFile(L“C:\\a.txt”, L”C:\\b.txt”, false);
– False để overwrite nếu đã có
Trang 25Di chuyển
• MoveFile(L“C:\\a.txt”, L”C:\\b.txt”);
– Áp dụng để làm hàm đổi tên file
07/11/2024 Seminar C4W - Bài tập 1 25
Trang 26Mở tập tin với chương trình tương ứng
• ShellExecute(NULL, L"open”, L”C:\\
boot.ini”, NULL, NULL,
SW_SHOWNORMAL);
Trang 27Lấy icon hệ thống
• HIMAGELIST hLarge, hSmall;
• Shell_GetImageLists(&hLarge, &hSmall);
Trang 28Thư viện hỗ trợ
Trang 29Lớp vector
• Dùng cài đặt chức năng back, forward
07/11/2024 Seminar C4W - Bài tập 1 29
Trang 30Các vấn đề liên quan đến
giao diện
Trang 31– TVN_SELCHANGED : thay đổi lựa chọn
• Lưu thông tin phụ trong node để xử lí
– TV_INSERTSTRUCT tvInsert.item.lParam
– Là con trỏ nên chứa nội dung bất kì
– Ép kiểu khi nhận được để sử dụng
07/11/2024 Seminar C4W - Bài tập 1 31
Trang 33Nâng cao
Trang 34Các chức năng cộng điểm
• Xây dựng chương trình theo hướng đối tượng
• Cho phép xem hình ảnh ở chế độ thumbnail
trong list view
• Đưa thêm menu vào icon
• Tạo ra splitter để điều chỉnh kích thước list
view và treeview
• Lưu lại thư mục đã duyệt lần cuối, tự động mở lại khi chạy chương trình
• …