• Thứ Sáu, 03/06/2005 23:13 (GMT+7)

    Vấn đề tiếng Việt trong lập trình Windows

    Tạo title bar tiếng Việt cho Visual Basic form

    PC World VN đã nhiều lần đưa ra thủ thuật để Việt hoá các caption tiếng Việt, trong đó có nhiều thủ thuật rất hay như của bạn Huỳnh Khánh Duy là “vẽ” lại các menu.  Tôi xin đưa ra một cách giải quyết vấn đề hiển thị tiếng Việt trên Title bar của Windows. Ý tưởng chính là dùng một label để giả làm Title bar có đủ các chức năng của một Title bar thông thường, cái khó nhất là làm sao khi người dùng di chuyển form thì label này cũng phải di chuyển theo. Để làm được việc này, bạn cần có một form như sau:

    Sau đó bạn cần nhập vào phần mã chương trình. Các hàm Windows API nên sao chép từ trình ApiViewer.

    ‘phần General/Decration

    ‘khai báo hàm WindowsAPI SendMessage

    Private Declare Function SendMessage Lib “user32” Alias “SendMessageA” (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

    Private Declare Function ReleaseCapture Lib “user32” () As Long

    Private Const HTCAPTION = 2

    Private Const WM_NCLBUTTONDOWN = &HA1

    ‘xử lý khi form thay đổi kích cỡ

    Private Sub Form_Resize()

    lbltitle.Width = Me.Width

    cmdclose.Left = Me.Width - cmdclose.Width

    End sub

    ‘xử lý khi form nạp

    Private Sub Form_Load()

    Form_resize()

    End Sub

    ‘xử lý khi người dùng nhấn-rê chuột trên label thì di chuyển cửa sổ

    Private Sub lbltitle_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

    Dim l As Long

    If Button = 1 Then

    ReleaseCapture

    l = SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)

    End If

    End Sub

    ‘khi người dùng ấn vào nút “X” trên cửa sổ

    Private Sub cmdclose_Click()

    Unload Me

    End Sub

    Thế là bạn đã tạo được một title bar Việt hoá rồi. Phương pháp này đơn giản và có thể áp dụng với các picture box khi bạn muốn dùng một ảnh làm Title bar như trình Winamp hoặc dùng ấn vào form để di chuyển nó như trình Jet-Audio, WinMP3player, Sonique;... Nhưng nó cũng có nhược điểm như khi form bạn có menu thì phải thêm một loạt các lệnh nữa để menu không hiển thị ở phía trên Title bar. Mọi ý kiến trao đổi xin gửi cho tôi qua e-mail: huanhuu@yahoo.com. Chúc các bạn thành công với chương trình Việt hoá của mình.

    Trương Nguyễn Hữu Huân

    Hà Nội

    Hiển thị tiếng Việt trên title bar trong lập trình trên Windows

    Thuộc tính Font của một form chỉ có tác dụng với các đối tượng nằm trên form, còn những nơi như Title bar, ToolTipText...  của một form chắc sẽ có nhiều bạn gặp khó khăn khi hiển thị tiếng Việt trong chương trình của mình. Sau đây là một cách đơn giản có thể hiển thị tiếng Việt khi lập trình với Windows, và từ đó, bạn có thể hiển thị tiếng Việt ở nhiều chỗ khác nữa.

    Điều kiện bắt buộc và cũng là hạn chế của phương pháp này là chúng ta phải dùng các font hệ thống tiếng Việt (system font) hay font MS Sans Serif do Microsoft cung cấp. Cách làm như sau:

    Ví dụ hiển thị hai từ “Tiếng Việt” trong thanh tiêu đề.

    Trong tính chất Caption của Form, bạn gõ “Ti”, sau đó để hiển thị ký tự “ế “, bạn nhấn và giữ phím Alt rồi gõ 0213 và sau đó nhả phím Alt ra và gõ tiếp ký tự “ng”, nhấn Space bar gõ tiếp “Vi”, nhấp giữ Alt gõ 0214, nhả phím Alt ra và gõ tiếp ký tự “t”. Như vậy, bạn thấy mỗi lần muốn nhập một ký tự có dấu, thay vì nhập bình thường, bạn phải nhấn và giữ phím Alt + con số tương ứng với ký tự đó. Khi nhập xong, ký tự có dấu đó sẽ chưa hiển thị ngay mà nó lại hiển thị một ký tự nào đó nhưng bạn yên tâm khi chương trình được thực thi thì ký tự đó mới hiển thị đúng theo yêu cầu. Hãy chạy thử chương trình để̃ thấy kết quả, thật dễ dàng phải không?

    Trong Windows, khi rê chuột đến nút Start, bạn sẽ thấy hiện lên dòng “Click here to begin”. Để thực hiện được điều này, bạn chỉ cần nhập chữ  bạn muốn vào thuộc tính ToolTipText của đối tượng đó, dù nó là Button hay Label... và bạn có thể Việt hoá theo cách trên.

    Bảng sau là các con số tương ứng với các ký tự có dấu tiếng Việt:

    Ngoài ra bạn cũng có thể dùng ứng dụng Character Map có sẵn trong Windows (trong menu Programs\Accessories) để biết ký tự nào tương ứng với con số nào.

    Vũ Lương Bằng

    Công ty Điện Thoại TP. HCM

    vubang@tlnet.com.vn

    ID: A0201_73