コンボボックスの入力制限

VB6の話。
入力文字数の制限について
VBから文字の数え方がUnicodeになったためそのままLenBをすると半角でも全角でも2バイトとなる。
このため、まず、文字コードを変換すると意図した文字サイズを取得することができる。

LenB(StrConv(inputString, vbFromUnicode))

このバイトサイズの問題があるため、全角、半角が混在するような環境ではオブジェクトのMaxLengthプロパティが使用することができない。
そもそもコンボボックスにはMaxLengthはない。
KeyPressやChangeイベントを駆使して解決する方法もあるが、APIを使用して解決する方法も昔はあった。
・入力可能コンボボックスの入力文字数制限をバイトで制限したい
http://dobon.net/vb/bbs/log3-10/5711.html
このサイトでAPIのSendMessageを使用して解決しているがこれができるのはWindows2000まで。
WindowsXP以降は仕様がかわったためこの方法は使用できない。
URLの内容では、少し勘違いがあって、「VB6ではできて、.NET以降はできない」としているが、そうではない。
入力内容のチェックとしては、「OK」ボタン等のイベントとチェックするのが確実のようだ。

補足
KeyAsciiを文字に変換する

chr$(KeyAscii)

このコードで文字に変換すれば全角かそうでないかの判定もできる。