Отображение кириллицы (кодировка) - VB
Формулировка задачи:
Если язык системы не русский отображается кракозябра
менять в реестре значения cp1251 не дело, так как это может затронуть работу другого софта
Как решить данную проблему? сменить стандартный шрифт? сделать свои шрифты и носить с собой?
// программа устанавливается. так что носить шрифты с программой и их установка не проблема
Решение задачи: «Отображение кириллицы (кодировка)»
textual
Листинг программы
- Option Explicit
- Private Sub Form_Load()
- lpPrevWndProc = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WndProc)
- End Sub
- Private Sub Form_Resize()
- If Me.WindowState <> vbMinimized Then txtData.Move 5, 5, Me.ScaleWidth - 10, Me.ScaleHeight - 10
- End Sub
- Private Sub Form_Unload(Cancel As Integer)
- SetWindowLong Me.hwnd, GWL_WNDPROC, lpPrevWndProc
- End Sub
- Private Sub mnuExit_Click()
- Unload Me
- End Sub
- Private Sub mnuPatch_Click()
- Dim fName As String, bName As String, sSrc As String, sUTF8() As Byte, hUpdate As Long, ret As Long
- fName = GetFile(Me.hwnd)
- If Len(fName) > 0 And Len(txtData.Text) > 0 Then
- bName = fName
- Do
- bName = Left$(bName, InStrRev(bName, ".") - 1) & "_backup.exe"
- Loop Until CopyFile(StrPtr(fName), StrPtr(bName), True) ' Пока не добъемся нужного имени
- FileCopy fName, Left$(fName, InStrRev(fName, ".") - 1) & "_backup.exe"
- hUpdate = BeginUpdateResource(StrPtr(fName), False)
- If hUpdate = 0 Then MsgBox "Ошибка": Exit Sub
- ' В UTF8
- sSrc = txtData.Text
- ret = WideCharToMultiByte(CP_UTF8, 0, StrPtr(sSrc), Len(sSrc), 0, 0, 0, 0)
- ReDim sUTF8(ret - 1)
- WideCharToMultiByte CP_UTF8, 0, StrPtr(sSrc), Len(sSrc), sUTF8(0), ret, 0, 0
- ret = UpdateResource(hUpdate, 24, 1, 0, sUTF8(0), ret)
- If ret = 0 Then MsgBox "Ошибка"
- EndUpdateResource hUpdate, False
- End If
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д