You don't really need bitmap files of the foreign characters. Rather you'll need one or more Unicode-enabled fonts that support your languages, so your text boxes can display them. And if there's still something you can't do with the font and need a character bitmap, you can create it on the fly by printing a character to a memory bitmap, et voil*!

When emulating foreign keyboard layouts, I'd suggest you do that with a key translation mapping you handle locally to your program, so you don't disturb other apps running on the system. Seems to me much like what you did in the Freebasic version. I'd further suggest you do the translation based on virtual key codes rather than character codes, making it independent from the host system's locale-dependent keyboard layout. When using virtual key codes, you'd need to hook into the KeyDown event since only that gets to see the virtual key code; both KeyPress and TextChanged merely see the character which is the result of the system's translation of the virtual key code.

And I'd still suggest to provide a virtual keyboard, as an alternative to the physical one but at least as a visual display of the foreign keybord layout. Say I'd start out learning Russian, would it be likely I already know the Russian keyboard layout by heart then? I don't think so... There has been a thread here about building a virtual keyboard as well, but you know, the forum search...

Quote Originally Posted by Tusike View Post
[...] seeing as german verbs have many forms [...].
If I'm not mistaken the number of different cases in English and German actually is the same, the difference just being that in English they're often expressed using auxiliary words when in German there's a separate verb form for the same meaning, admittedly. Even good ol' Latin has one more case than German. ... and I've heard Sanskrit is really, really scary in this respect...

[...] what I have fits in to what I'm imagining.
At least for hobby programmers that's probably what's most important.

Experience shows that out of the programs I write, those I regularly use myself gradually improve in usability over time, eventually usually becoming the better ones. Not really surprising though, is it? In all of them I try to respect common GUI habits of course, as long as it's adequate.