Šta je novo?

VB6 & cirilica

Hate

Čuven
Učlanjen(a)
31.01.2002
Poruke
158
Poena
619
Ljudi, zna li neko kako da nateram Visual Basic 6 da radi sa cirilicom? Program koji pisem strogo mora biti na cirilici, a Visual Basic 6 ne podrzava Cirilicu niti unicode.
 
Podrzava.
Pogledaj na ovom sajtu - (LINK)
Poz


EDIT:
Nakon cheprkanja po arhivi nadjoh i neke custom kontrole koje tje ti mozda biti od koristi (u attachmentu), sve sa source kodom.
Jos jednom, poz
 

Prilozi

  • UnicodeControls.rar
    172.8 KB · Pregleda: 202
Poslednja izmena:
Uspeo sam sve da odradim i radi lepo u win XP-u. Hvala puno. Zeza me samo u win98, za koju se program i radi, to sto u meniju prozora, nazivima formova (caption) i samom kodu (ukoliko se neki podatak unese putem editboxa ili sl.) ne vidi cirilicu. Vidi je na dugmicima, frame-ovima, labelama... Ima li za ovo resenja?
 
Uh, Win98. Kada sam se pre par godina bavio ovom temom imao sam srecu da ga izbegnem. Poigrao sam se sa njim iz cistog kurioziteta tako da shvatam o cemu govoris.

Sto se tice Caption svojstva forme, nisam potpuno siguran da ce ovo raditi, ali vredi probati.

- Ove deklaracije gurni u neki modul koji ti odgovara:
Public Declare Function apiDefWindowProcW _
Lib "user32" _
Alias "DefWindowProcW" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) _
As Long

Public Const WM_SETTEXT = &HC


- Naredne linije koda treba da stoje na Load dogadjaju forme:
Dim cFormCaption As String
cFormCaption = StrConv(StrConv("наслов форме", vbFromUnicode, 2074), vbUnicode, 3098)
Call apiDefWindowProcW(Me.hwnd, WM_SETTEXT, ByVal &H0, StrPtr(cFormCaption))

Pri cemu su 2074 i 3098 identifikatori jezika. 3098 je u nasem slucaju konstanta jer zelimo da nam je rezultat funkcije uvek cirilica, ali ono 2074 se menja u zavisnosti od toga sta je podeseno kao jezik u Regional Settings-u. Vrednosti sa kojima je moguce da ces se sresti su:
1033 - English (US)
1060 - Slovenian
2074 - Serbian (Latin)
3098 - Serbian (Cyrillic)
2057 - English (UK)

...a u run-time ih je moguce iscitati APi funkcijom "GetUserDefaultLangID" (evo i deklaracije)
Public Declare Function apiGetUserDefaultLangID _
Lib "kernel32" _
Alias "GetUserDefaultLangID" _
() As Integer
_________________________________________________________

Sto se tice menija, moraces sam da se pomucis. Ponavljam, kada sam se ovim pitanjem bavio, nisam bio prinudjen da nadjem resenje tako da i nisam previse vremena potrosio na to.
Probaj sa onim DLL-om koji se nalazi u tutorialu (Unicows.DLL) ili sa "Arial Unicode MS" fontom (onaj ogromi od 23MB, ARIALUNI.TTF) koji stize uz Office XP. Jos jedna opcija bila bi nalazenje nekog custom menija na netu koji podrzava Unicode, ili generisanje menija kroz kod.
Bilo kako bilo sigurno je moguce to nekako izvesti.
Zao mi je sto nemam neki konkretniji savet po ovom pitanju. Sta da ti kazem, planiraj da odvojis dovoljno vremena za googlanje.

Wish you luck. Pozdrav.
 
Poslednja izmena:
ja bih ti predložio da projekat prebaciš na VB.NET. .net framework podržava win98, imaš besplatno razvojno okruženje (Microsoft Visual Basic 2005 Express Edition), a da ne pričam o podršci za unicode. ipak je vb6 sedam godina stara tehnologija!
 
Ne znam da li gornja komponenta koristi unicode, ali ako koristi, onda je za 98-micu rešenje skidanje unicows.dll-a sa MS-ovog sajta i distribuiranje uz program...

EDIT: Tek sad vidih, Explorer je predložio isto...
Pokušaj takođe da umesto tog ogromnog fonta uz setup programa distribuiraš "Microsoft Sans Serif" font, pošto je to TrueType varijanta bitmapiranog MS Sans Serif fonta...
 
Poslednja izmena:
Sto se tice .net framework varijante, vec sam pokusao da projekat konvertujem u visual basic 2005 .net, ali bezuspesno. Sada mi je kasno da pocinjem sve iz pocetka, obzirom da sam vec dosta uradio, tako da cu izgleda morati da izguram do kraja sa VB6 platformom. Probacu sve varijante, sto se fontova tice, velicina nije problem. Hvala na ukazanoj do sada pomoci svima!
 
Vrh Dno