ab.com コミュニティ https://www.activebasic.com/forum/ |
|
EditBoxのサブクラス化による文字入力制限について https://www.activebasic.com/forum/viewtopic.php?t=4613 |
ページ 1 / 1 |
作成者: | Tako [ 2017年3月08日(水) 16:42 ] |
記事の件名: | EditBoxのサブクラス化による文字入力制限について |
数年ぶりにプログラムを書いています。 AB4にて、EditBoxのサブクラス化による文字入力制限をしていますが問題が有ります。 1、規制文字に"%"と"'"を加えると、EditBox内で左右キーによるカーソル移動ができなくなる。 2、Debugモードにて起動すると、EditBoxを選択すると例外処理エラーとなる。 (実行形式にコンパイルすると動作する。) よろしくお願いします。
|
作成者: | たかせ [ 2017年4月04日(火) 21:20 ] |
記事の件名: | Re: EditBoxのサブクラス化による文字入力制限について |
お久しぶりです。 1について %の16進表現は&H25、'の16進表現は&H27となります。 またABのHELPにあるInkey$関数のサンプルプログラムを実行すると、 左カーソルキーを押下すると&H25(VK_LEFT)が返却されます。 右カーソルキーを押下すると&H27(VK_RIGHT)が返却されます。 なので規制文字に%と'を加えて左右カーソルキーを動かそうとしてもそれが禁止文字と一致したためカーソル移動ができなくなると思います。 2について TAKOさんのPCはWindows 7(32Bit/64Bit)ですか? 私のPCはWindows 7(32Bit)です。 Windows XPだと問題なくDebugモードにて起動できました。 Windows 7だとなぜかDebugモードにすると異常終了することがあります。 Windows 8.1/10についてはわかりませんが。 原因がわからないので私はあきらめています。 ご確認よろしくお願いいたします。 |
作成者: | redfox [ 2017年4月09日(日) 11:02 ] |
記事の件名: | Re: EditBoxのサブクラス化による文字入力制限について |
WindowProc内でキー入力を無視するのであれば 引数のmessageがWM_CHARの場合に対処するようにしてみましょう コード: Function LimitedEditProc(hWnd As HWND, message As DWORD, wParam As WPARAM, lParam As LPARAM) As DWORD Dim LimitChar As String 'OK LimitChar=" !#$&()*+,/<=>?@[\]^_`{|}~"+Chr$(&H22) 'NG LimitChar=" !#$%&'()*+,/<=>?@[\]^_`{|}~"+Chr$(&H22) LimitChar=" !#$&()*+,/<=>?@[\]^_`{|}~"+Chr$(&H22) if message = WM_CHAR then If InStr(1, LimitChar, Chr$(wParam As Byte)) Then LimitedEditProc=0 Exit Function End If End If LimitedEditProc=CallWindowProc(DefEditProc , hWnd, message, wParam, lParam) End Function |
作成者: | Tako [ 2017年5月10日(水) 10:13 ] |
記事の件名: | Re: EditBoxのサブクラス化による文字入力制限について |
たかせ様 どうも、お久しぶりです。 キーコードとダブっているとは思いませんでした。 ご指摘ありがとうございます。 メインの開発環境はWin7 64Bitですが、押入れの奥に有るXpを久しぶり出してみます。 redfox様 うまく行きました、ありがとうございます。 何度か別の言語にも浮気したのですが、ABが一番しっくり来るんですょねぇ~ |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |