

Private Declare Function SetWindowTextW Lib "user32" (ByVal hwnd As Long, ByVal lpString As String) As Long
'__________________________________
Call SetWindowTextW(Me.hwnd, StrConv("Текст", vbUnicode))
Call SetWindowTextW(Text1.hwnd, StrConv("Текст", vbUnicode))

Dim hwndEdit As Long
hwndEdit = CreateWindowEx(0, "Edit", "", WS_VISIBLE Or WS_CHILD Or WS_BORDER, 10, 10, 300, 20, Me.hwnd, 0, App.hInstance, &H0)
Call SetWindowTextW(hwndEdit, StrConv("Текст", vbUnicode))

s = ChrW(&H2660) & ChrW(&HBF) & ChrW(&H203C)

s = ChrW(&H2660) & ChrW(&HBF) & ChrW(&H203C)
msgbox len(s)



Option Explicit
Private Declare Function MessageBoxW Lib "user32" (ByVal hWnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal wType As Long) As Long
Sub Main()
Dim s As String
s = ChrW(&H2660) & ChrW(&HBF) & ChrW(&H203C)
MessageBoxW 0, StrPtr(s), StrPtr("У меня в XP это работает прекрасно"), vbInformation
End Sub


Option Explicit
Private Declare Function SendMessageW Lib "user32" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_SETTEXT = &HC
Sub Main()
Dim s As String
s = ChrW(&H2660) & ChrW(&HBF) & ChrW(&H203C)
SendMessageW &H1D069E, WM_SETTEXT, 0, ByVal StrPtr(s)
End Sub


Dim s As String, hNotepad As Long
s = ChrW(&H2660) & ChrW(&HBF) & ChrW(&H203C)
MessageBox 0, StrPtr(s), 0, 0
hNotepad = FindWindow("notepad", vbNullString)
SendMessage FindWindowEx(hNotepad, 0, "Edit", vbNullString), WM_SETTEXT, 0, ByVal StrPtr(s)

ANDLL писал(а):Н-да![]()
- Код: Выделить всё
Dim s As String, hNotepad As Long
s = ChrW(&H2660) & ChrW(&HBF) & ChrW(&H203C)
MessageBox 0, StrPtr(s), 0, 0
hNotepad = FindWindow("notepad", vbNullString)
SendMessage FindWindowEx(hNotepad, 0, "Edit", vbNullString), WM_SETTEXT, 0, ByVal StrPtr(s)
И прям одно и то же отображается?
ANDLL писал(а):P.S. Воспитанность у тебя, tyomitch...


tyomitch писал(а):Э... А что я не так сказал?
[/i]tyomitch писал(а):ANDLL, чего-то никаких проблем нету, кроме придуманных тобой

ANDLL писал(а):Хы. Если заменить деларацию на W, то действительно, в блокноте отображается то, что нужно.
В MessageBox'е - первый символ заменяется на квадратик, остальные отображаются верно(возможно, связанно со системным шрифтом для Message'а).
ANDLL писал(а):Если устанавливать текст(С помощью SetWindowTextW) на новосозданном Edit'е, то отображается ерунда. Видимо связанно с тем, что шрифт, выбранный по умолчанию не поддерживает эти символы.
Option Explicit
Private Declare Function CreateWindowExW Lib "user32" (ByVal dwExStyle As Long, ByVal lpClassName As Long, ByVal lpWindowName As Long, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function SetWindowTextW Lib "user32" (ByVal hwnd As Long, ByVal lpString As Long) As Long
Private Const WS_VISIBLE = &H10000000
Private Const WS_CHILD = &H40000000
Private Const WS_BORDER = &H800000
Private Const WM_SETFONT = &H30
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 Const DEFAULT_GUI_FONT = 17
Private Declare Function GetStockObject Lib "gdi32" (ByVal nIndex As Long) As Long
Private Sub Form_Load()
Dim hwndEdit As Long
hwndEdit = CreateWindowExW(0, StrPtr("Edit"), StrPtr(""), WS_VISIBLE Or WS_CHILD Or WS_BORDER, 10, 10, 300, 20, Me.hwnd, 0, App.hInstance, &H0)
'SendMessage hwndEdit, WM_SETFONT, GetStockObject(DEFAULT_GUI_FONT), ByVal 0&
SetWindowTextW hwndEdit, StrPtr(ChrW(&H2660) & ChrW(&HBF) & ChrW(&H203C))
End Sub
ANDLL писал(а):tyomitch писал(а):Э... А что я не так сказал?
Будто я для тебя сочиняю головоломки, что бы ты их разгадывал. Если считаешь вопросы смешными, неадекватными, элементарными, в-общем не заслыживающими твое святейшее внимание, просто не отвечай


Приведенный tyomitch'ем код у меня на XP, примерно следующее писал(а):ЂЂЂ

ism писал(а):Приведенный tyomitch'ем код у меня на XP, примерно следующее писал(а):ЂЂЂ


tyomitch писал(а):Чем я тебя обидел-то? Где ты увидел, что я счёл вопросы "смешными, неадекватными, элементарными"??

ANDLL писал(а):Но ведь вообще COM поддерживает unicodeПочему же одни клиенты нормально реагируют на unicode-имена, а другие - нет


Сейчас этот форум просматривают: Google-бот, Majestic-12 [Bot], Yandex-бот и гости: 11