キャレット | が残って困っています。
キャレット | が残って困っています。
Editボックスで半角文字を入力すると,キャレット記号「|」が入力した文字の半角の半分だけ移動した位置と正規の位置(文末)の2箇所に出てきます。入力された文字をカーソルで移動すると,直前のキャレットと正規のキャレットが2箇所表示されてしまいます。
どうしてこなるのか,いろいろ調べてもわかりませんでした。どなたか解決策を教えていただけないでしょうか?
なお,全角文字や漢字の半角ではそのようなことは起こりません。
どうしてこなるのか,いろいろ調べてもわかりませんでした。どなたか解決策を教えていただけないでしょうか?
なお,全角文字や漢字の半角ではそのようなことは起こりません。
-
- 記事: 33
- 登録日時: 2006年5月22日(月) 21:01
- お住まい: 山口
- 連絡する:
キャレット | が残って困っています。(2)
Indigo Visualist 様 ご回答いただき,ありがとうございます。
> それはただ単にプレーンなテキストボックスで、スタイルやイベントなども設定してないのですよね?
スタイルは「可視」のチェックをはずして,プログラム中で「可視」にしています。
あと,拡張スタイルをクライアント境界線に設定してあります。
イベントは「Change」イベントを設定しています。
> メモ帳などを開いて、文字を入力してみて下さい。同じ現象が起こりませんか?
同じ現象は起きませんでした。
> OSかIMEの問題かも・・・?
実は以前のバージョン(ab307)では日本語が正常に表示されたのですが,今のバージョン(ab424)にしてから日本語が文字化けを起こしています(ソースだけで,実行するときちんと表示されます)。それが何らかの影響を与えているのかも・・・?
同じバージョン(ab424)を職場でも使っているのですが,そちらの方は文字化けしないのですが・・・。
よろしくお願いいたします。
> それはただ単にプレーンなテキストボックスで、スタイルやイベントなども設定してないのですよね?
スタイルは「可視」のチェックをはずして,プログラム中で「可視」にしています。
あと,拡張スタイルをクライアント境界線に設定してあります。
イベントは「Change」イベントを設定しています。
> メモ帳などを開いて、文字を入力してみて下さい。同じ現象が起こりませんか?
同じ現象は起きませんでした。
> OSかIMEの問題かも・・・?
実は以前のバージョン(ab307)では日本語が正常に表示されたのですが,今のバージョン(ab424)にしてから日本語が文字化けを起こしています(ソースだけで,実行するときちんと表示されます)。それが何らかの影響を与えているのかも・・・?
同じバージョン(ab424)を職場でも使っているのですが,そちらの方は文字化けしないのですが・・・。
よろしくお願いいたします。
キャレット | が残って困っています。(3)
nobsd 様 アドバイスをいただきありがとうございます。
ご指摘のようにフォントの種類をTerminalに変えてみましたがだめでした。
window全体でもeditボックスだけの場合でもキャレットが残ってしまいます。
ところで,editボックスだけフォントを変える方法を私はつぎのようにしていますが,それが間違っているのかもしれません。
Dim hFont_Text As HFONT
hFont_Text=CreateFont(-24,0,0,0,600,0,0,0,128,3,2,1,50,"MS Pゴシック")
SendDlgItemMessage(hMainWnd as DWord,EditBox,WM_SETFONT,hFont_Text as DWord,0)
ご指摘のようにフォントの種類をTerminalに変えてみましたがだめでした。
window全体でもeditボックスだけの場合でもキャレットが残ってしまいます。
ところで,editボックスだけフォントを変える方法を私はつぎのようにしていますが,それが間違っているのかもしれません。
Dim hFont_Text As HFONT
hFont_Text=CreateFont(-24,0,0,0,600,0,0,0,128,3,2,1,50,"MS Pゴシック")
SendDlgItemMessage(hMainWnd as DWord,EditBox,WM_SETFONT,hFont_Text as DWord,0)
-
- 記事: 33
- 登録日時: 2006年5月22日(月) 21:01
- お住まい: 山口
- 連絡する:
キャレット | が残って困っています。(4)
Indigo Visualist 様 1泊2日の出張しておりまして,返事が遅れ申しわけありません。
さて,今回の件ですが,ご指摘の方法をやってみました。
そのことを報告します。
> その現象が起こるのは、一つのプロジェクトの中だけでしょうか?
> それとも、ABでコンパイルした全てのプロジェクトでしょうか?
他のプロジェクトでためしましたが,やはり同じ症状が出ます。
もっとも同じようにフォントを設定しましたので当たり前といえば当たり前の結果だと思いますが・・・。
> あと、RAD画面で左下にある「テスト」ボタンを押して、表示されたエディットボックスでも同じ現象が起きますか?
「テスト」では起きません。「テスト」の場合,フォントの設定は無視されるようです。
本プログラムでもフォントの設定をしなければ,キャレットが残ることはありません。
ということは,前回記したフォントの設定の仕方がおかしいのでしょうか?
みなさんはどんな方法でフォントの設定をしているのでしょうか?
よろしくお願いします。
さて,今回の件ですが,ご指摘の方法をやってみました。
そのことを報告します。
> その現象が起こるのは、一つのプロジェクトの中だけでしょうか?
> それとも、ABでコンパイルした全てのプロジェクトでしょうか?
他のプロジェクトでためしましたが,やはり同じ症状が出ます。
もっとも同じようにフォントを設定しましたので当たり前といえば当たり前の結果だと思いますが・・・。
> あと、RAD画面で左下にある「テスト」ボタンを押して、表示されたエディットボックスでも同じ現象が起きますか?
「テスト」では起きません。「テスト」の場合,フォントの設定は無視されるようです。
本プログラムでもフォントの設定をしなければ,キャレットが残ることはありません。
ということは,前回記したフォントの設定の仕方がおかしいのでしょうか?
みなさんはどんな方法でフォントの設定をしているのでしょうか?
よろしくお願いします。
-
- 記事: 33
- 登録日時: 2006年5月22日(月) 21:01
- お住まい: 山口
- 連絡する:
Re: キャレット | が残って困っています。
フォントの設定の仕方は問題ないと思います。ただ、今気付いたのですが、
> SendDlgItemMessage(hMainWnd as DWord,EditBox,WM_SETFONT,hFont_Text as DWord,0)
の「hMainWnd as」と「DWord」との間に全角スペースが入っているのですが、これが原因ではないですよね?
> SendDlgItemMessage(hMainWnd as DWord,EditBox,WM_SETFONT,hFont_Text as DWord,0)
の「hMainWnd as」と「DWord」との間に全角スペースが入っているのですが、これが原因ではないですよね?
キャレット | が残って困っています。(5)
Indigo Visualist 様 たびたびありがとうございます。
「hMainWnd as」と「DWord」との間に全角スペースが入っているとのことですが,プログラムでは半角のスペースになっております。
ためしに,全角スペースにするとエラー(全角スペースが含まれています・・・)になってプログラムが実行されませんでした。
フォーム全体のフォントをこのEditボックス(1ヶ所)に合わせて,それ以外(いっぱい)を設定すれば問題は起きないとは思いますが・・・。
「hMainWnd as」と「DWord」との間に全角スペースが入っているとのことですが,プログラムでは半角のスペースになっております。
ためしに,全角スペースにするとエラー(全角スペースが含まれています・・・)になってプログラムが実行されませんでした。
フォーム全体のフォントをこのEditボックス(1ヶ所)に合わせて,それ以外(いっぱい)を設定すれば問題は起きないとは思いますが・・・。
-
- 記事: 33
- 登録日時: 2006年5月22日(月) 21:01
- お住まい: 山口
- 連絡する:
キャレット | が残って困っています。(6)
Indigo Visualist 様 返信ありがとうございます。
下の2行はプログラムの先頭の
「' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。」
の下にあります。
>Dim hFont_Text As HFONT
>hFont_Text=CreateFont(-24,0,0,0,600,0,0,0,128,3,2,1,50,"MS Pゴシック")
下の1行は
「Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord」
の下に書きました。
>SendDlgItemMessage(hMainWnd as DWord,EditBox,WM_SETFONT,hFont_Text as DWord,0)
そして,最後の「フォントの破棄」は
「Sub MainWnd_Destroy()」
に
「DeleteObject(hFont_Text)」
と記述しました。
Indigo Visualist 様 いかがでしょうか?
下の2行はプログラムの先頭の
「' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。」
の下にあります。
>Dim hFont_Text As HFONT
>hFont_Text=CreateFont(-24,0,0,0,600,0,0,0,128,3,2,1,50,"MS Pゴシック")
下の1行は
「Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord」
の下に書きました。
>SendDlgItemMessage(hMainWnd as DWord,EditBox,WM_SETFONT,hFont_Text as DWord,0)
そして,最後の「フォントの破棄」は
「Sub MainWnd_Destroy()」
に
「DeleteObject(hFont_Text)」
と記述しました。
Indigo Visualist 様 いかがでしょうか?
キャレット | が残って困っています。(解決)
Indigo Visualist 様 のご指摘を元に
>SendDlgItemMessage(hMainWnd as DWord,EditBox,WM_SETFONT,hFont_Text as DWord,0)
の位置を「Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)」に持っていったらうまくいきました!
記述する場所がいけなかったようです(本当かな?)。
ここまで,いろいろご指摘・ご指導をいただき,本当にありがとうございました。
>SendDlgItemMessage(hMainWnd as DWord,EditBox,WM_SETFONT,hFont_Text as DWord,0)
の位置を「Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)」に持っていったらうまくいきました!
記述する場所がいけなかったようです(本当かな?)。
ここまで,いろいろご指摘・ご指導をいただき,本当にありがとうございました。
-
- 記事: 33
- 登録日時: 2006年5月22日(月) 21:01
- お住まい: 山口
- 連絡する:
おめでとうございます!
本当に良かったです。
今更なことを言いますと、MainWndProcはコマンドを処理するごと(?)に何度も呼ばれるので、
ウィンドウの設定など始めに一度だけ実行する処理は、MainWnd_Createで実行すると良いですよ。
・・・本当に今更ですね。すみません。
今更なことを言いますと、MainWndProcはコマンドを処理するごと(?)に何度も呼ばれるので、
ウィンドウの設定など始めに一度だけ実行する処理は、MainWnd_Createで実行すると良いですよ。
・・・本当に今更ですね。すみません。