Câu hỏi

25/05/2013 20:39
Tôi có viết 1 chương trình editor hiển thị tốt chữ Việt Unicode dựng sẵn nhưng không biết cách hiển thị chữ Việt Unicode tổ hợp?
Tôi có viết 1 chương trình editor hiển thị tốt chữ Việt Unicode dựng sẵn nhưng không biết cách hiển thị chữ Việt Unicode tổ hợp. Xin hướng dẫn.
ahchicoem
25/05/2013 20:39
Danh sách câu trả lời (1)

Hiện có 2 phương pháp hiển thị chuỗi chữ Việt Unicode (có thể chứa lẫn lộn mã dựng sẵn và tổ hợp) được dùng là:
1. chuẩn hóa chuỗi cần hiển thị về dựng sẵn rồi gọi hàm hệ thống (thí dụ TextOutW() trên Windows) để hiển thị chuỗi dựng sẵn chuẩn hóa. Đây là cách mà các ứng dụng trong bộ Microsoft Office XP đang sử dụng. Nhờ phương pháp này mà người dùng không phân biệt đâu là dữ liệu dùng mã dựng sẵn, đâu là dữ liệu dùng mã tổ hợp. Bạn có thể liên hệ với tòa soạn PC World VN để copy file source C++ chứa hàm chuẩn hóa chuỗi chữ Việt về mã dựng sẵn hay về mã tổ hợp.
2. hiển thị ký tự tổ hợp bằng cách lắp ghép các thành phần: đầu tiên hiển thị ký tự chính (nguyên âm), sau đó hiển thị từng ký tự dấu, vị trí ký tự dấu được tính toán sao cho phù hợp với ký tự chính. Phương pháp này được thư viện Qt, thư viện này được dùng bởi nhiều ứng dụng phổ biến trên Linux sử dụng. Chuỗi dựng sẵn và chuỗi tổ hợp được hiển thị theo phương pháp này thường không giống nhau, vì hình dáng các ký tự dựng sẵn được qui định tĩnh trong font chữ, còn hình dạng các ký tự tổ hợp được xử lý động tại thời điểm hiển thị.
Tôi viết 1 phần mềm dùng dialog trên MFC, nhưng muốn mỗi khi chạy thì dialog này ẩn đi, người dùng sẽ tương tác với icon trên thanh Taskbar. Tuy nhiên khi sử dụng lệnh như void CMyApp::OnInitDialog() { CDialog::OnInitDialog(); ////// ShowWindow(SW_HIDE); } thì không có tác dụng. Thêm nữa, khi chương trình chạy bình thường chiếm khoảng 3MB Ram (trong Task manager). Nhưng khi gọi 1 số hàm như GetOpenFileName hay ShBrowseForFolder thì lượng Ram sử dụng lên tới 5MB hay hơn, ngay cả khi đã dùng các đoạn mã chuẩn trong MSDN. Xin hướng dẫn.
Nếu bạn muốn mỗi khi chạy, cửa sổ ứng dụng không hiển thị, chỉ có icon xuất hiện trong thanh taskbar, bạn có thể dùng lệnh sau ở cuối hàm CMyApp::OnInitDialog().
void CMyApp::OnInitDialog() {
....
ShowWindow(SW_MINIMIZE);
}
Dung lượng bộ nhớ dành cho mỗi chương trình phụ thuộc vào nhiều yếu tố: độ lớn đoạn code bạn viết, số lượng hàm thư viện bạn dùng (trực tiếp thông qua đoạn code của bạn hay gián tiếp thông qua các hàm được bạn gọi), số lượng các biến dữ liệu và kiểu dữ liệu được dùng cho biến đó... Thường khi viết phần mềm, đầu tiên chúng ta chỉ nên tập trung vào chức năng của ứng dụng, làm sao để viết chương trình nhanh chóng, dễ dàng, chương trình chạy tin cậy, ổn định, còn kích thước của chương trình để “hạ hồi phần giải”. Hơn nữa, hầu hết các ứng dụng mà bạn viết có chức năng đơn giản nên chiếm rất ít bộ nhớ, bạn không nên quan tâm đến việc tối ưu hóa bộ nhớ làm gì. Nếu bạn xem thông tin trong cửa sổ “Task Manager” thì các phần mềm có kích thước bộ nhớ từ 5MB trở xuống là các phần mềm nhỏ. Việc tối ưu hóa bộ nhớ cho phần mềm đòi hỏi nhiều kiến thức chuyên môn, nếu chưa cần thiết bạn không nên quan tâm làm gì.
1. chuẩn hóa chuỗi cần hiển thị về dựng sẵn rồi gọi hàm hệ thống (thí dụ TextOutW() trên Windows) để hiển thị chuỗi dựng sẵn chuẩn hóa. Đây là cách mà các ứng dụng trong bộ Microsoft Office XP đang sử dụng. Nhờ phương pháp này mà người dùng không phân biệt đâu là dữ liệu dùng mã dựng sẵn, đâu là dữ liệu dùng mã tổ hợp. Bạn có thể liên hệ với tòa soạn PC World VN để copy file source C++ chứa hàm chuẩn hóa chuỗi chữ Việt về mã dựng sẵn hay về mã tổ hợp.
2. hiển thị ký tự tổ hợp bằng cách lắp ghép các thành phần: đầu tiên hiển thị ký tự chính (nguyên âm), sau đó hiển thị từng ký tự dấu, vị trí ký tự dấu được tính toán sao cho phù hợp với ký tự chính. Phương pháp này được thư viện Qt, thư viện này được dùng bởi nhiều ứng dụng phổ biến trên Linux sử dụng. Chuỗi dựng sẵn và chuỗi tổ hợp được hiển thị theo phương pháp này thường không giống nhau, vì hình dáng các ký tự dựng sẵn được qui định tĩnh trong font chữ, còn hình dạng các ký tự tổ hợp được xử lý động tại thời điểm hiển thị.
Tôi viết 1 phần mềm dùng dialog trên MFC, nhưng muốn mỗi khi chạy thì dialog này ẩn đi, người dùng sẽ tương tác với icon trên thanh Taskbar. Tuy nhiên khi sử dụng lệnh như void CMyApp::OnInitDialog() { CDialog::OnInitDialog(); ////// ShowWindow(SW_HIDE); } thì không có tác dụng. Thêm nữa, khi chương trình chạy bình thường chiếm khoảng 3MB Ram (trong Task manager). Nhưng khi gọi 1 số hàm như GetOpenFileName hay ShBrowseForFolder thì lượng Ram sử dụng lên tới 5MB hay hơn, ngay cả khi đã dùng các đoạn mã chuẩn trong MSDN. Xin hướng dẫn.
Nếu bạn muốn mỗi khi chạy, cửa sổ ứng dụng không hiển thị, chỉ có icon xuất hiện trong thanh taskbar, bạn có thể dùng lệnh sau ở cuối hàm CMyApp::OnInitDialog().
void CMyApp::OnInitDialog() {
....
ShowWindow(SW_MINIMIZE);
}
Dung lượng bộ nhớ dành cho mỗi chương trình phụ thuộc vào nhiều yếu tố: độ lớn đoạn code bạn viết, số lượng hàm thư viện bạn dùng (trực tiếp thông qua đoạn code của bạn hay gián tiếp thông qua các hàm được bạn gọi), số lượng các biến dữ liệu và kiểu dữ liệu được dùng cho biến đó... Thường khi viết phần mềm, đầu tiên chúng ta chỉ nên tập trung vào chức năng của ứng dụng, làm sao để viết chương trình nhanh chóng, dễ dàng, chương trình chạy tin cậy, ổn định, còn kích thước của chương trình để “hạ hồi phần giải”. Hơn nữa, hầu hết các ứng dụng mà bạn viết có chức năng đơn giản nên chiếm rất ít bộ nhớ, bạn không nên quan tâm đến việc tối ưu hóa bộ nhớ làm gì. Nếu bạn xem thông tin trong cửa sổ “Task Manager” thì các phần mềm có kích thước bộ nhớ từ 5MB trở xuống là các phần mềm nhỏ. Việc tối ưu hóa bộ nhớ cho phần mềm đòi hỏi nhiều kiến thức chuyên môn, nếu chưa cần thiết bạn không nên quan tâm làm gì.
Trả lời câu hỏi
Câu hỏi lĩnh vực Lập trình
Rao vặt Siêu Vip