キャレット | が残って困っています。

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: キャレット | が残って困っています。

おめでとうございます!

by Indigo Visualist » 2006年9月22日(金) 23:14

本当に良かったです。
今更なことを言いますと、MainWndProcはコマンドを処理するごと(?)に何度も呼ばれるので、
ウィンドウの設定など始めに一度だけ実行する処理は、MainWnd_Createで実行すると良いですよ。
・・・本当に今更ですね。すみません。

キャレット | が残って困っています。(解決)

by hide21 » 2006年9月22日(金) 21:00

Indigo Visualist 様 のご指摘を元に

>SendDlgItemMessage(hMainWnd as DWord,EditBox,WM_SETFONT,hFont_Text as DWord,0)

の位置を「Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)」に持っていったらうまくいきました!
記述する場所がいけなかったようです(本当かな?)。

ここまで,いろいろご指摘・ご指導をいただき,本当にありがとうございました。

キャレット | が残って困っています。(6)

by hide21 » 2006年9月22日(金) 20:37

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 様 いかがでしょうか?

by Indigo Visualist » 2006年9月22日(金) 01:55

そうですよね。また今気付いたことなのですが、
>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)
このコードはプログラム内のどこに記述されていますか?
あとDeleteObjectによるフォントの破棄はどこで行われていますか?

キャレット | が残って困っています。(5)

by hide21 » 2006年9月21日(木) 19:35

Indigo Visualist 様 たびたびありがとうございます。

「hMainWnd as」と「DWord」との間に全角スペースが入っているとのことですが,プログラムでは半角のスペースになっております。
ためしに,全角スペースにするとエラー(全角スペースが含まれています・・・)になってプログラムが実行されませんでした。

フォーム全体のフォントをこのEditボックス(1ヶ所)に合わせて,それ以外(いっぱい)を設定すれば問題は起きないとは思いますが・・・。

Re: キャレット | が残って困っています。

by Indigo Visualist » 2006年9月21日(木) 14:50

フォントの設定の仕方は問題ないと思います。ただ、今気付いたのですが、
> SendDlgItemMessage(hMainWnd as DWord,EditBox,WM_SETFONT,hFont_Text as DWord,0)
の「hMainWnd as」と「DWord」との間に全角スペースが入っているのですが、これが原因ではないですよね?

キャレット | が残って困っています。(4)

by hide21 » 2006年9月20日(水) 21:25

Indigo Visualist 様 1泊2日の出張しておりまして,返事が遅れ申しわけありません。
さて,今回の件ですが,ご指摘の方法をやってみました。
そのことを報告します。

> その現象が起こるのは、一つのプロジェクトの中だけでしょうか?
> それとも、ABでコンパイルした全てのプロジェクトでしょうか?
他のプロジェクトでためしましたが,やはり同じ症状が出ます。
もっとも同じようにフォントを設定しましたので当たり前といえば当たり前の結果だと思いますが・・・。

> あと、RAD画面で左下にある「テスト」ボタンを押して、表示されたエディットボックスでも同じ現象が起きますか?
「テスト」では起きません。「テスト」の場合,フォントの設定は無視されるようです。
本プログラムでもフォントの設定をしなければ,キャレットが残ることはありません。
ということは,前回記したフォントの設定の仕方がおかしいのでしょうか?
みなさんはどんな方法でフォントの設定をしているのでしょうか?

よろしくお願いします。

by Indigo Visualist » 2006年9月18日(月) 22:23

そうですか・・・。詳しい状況がよく分らないのですが、
その現象が起こるのは、一つのプロジェクトの中だけでしょうか?
それとも、ABでコンパイルした全てのプロジェクトでしょうか?
あと、RAD画面で左下にある「テスト」ボタンを押して、表示されたエディットボックスでも同じ現象が起きますか?
起きるのならば環境(あるいはAB)の問題で、起きなければコードの問題と思います。
平凡なことしか言えず、すみません。

キャレット | が残って困っています。(3)

by hide21 » 2006年9月18日(月) 21:09

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)

by nobsd » 2006年9月18日(月) 16:01

私も昨日までそれに悩まされていました。
フォントをFixdsysに変えたら|が表示されなくなりましたよ。

すみません^^;
間違いました。
Terminalでした。
^^;

キャレット | が残って困っています。(2)

by hide21 » 2006年9月17日(日) 20:37

Indigo Visualist 様 ご回答いただき,ありがとうございます。

> それはただ単にプレーンなテキストボックスで、スタイルやイベントなども設定してないのですよね?
スタイルは「可視」のチェックをはずして,プログラム中で「可視」にしています。
あと,拡張スタイルをクライアント境界線に設定してあります。
イベントは「Change」イベントを設定しています。

> メモ帳などを開いて、文字を入力してみて下さい。同じ現象が起こりませんか?
同じ現象は起きませんでした。

> OSかIMEの問題かも・・・?
実は以前のバージョン(ab307)では日本語が正常に表示されたのですが,今のバージョン(ab424)にしてから日本語が文字化けを起こしています(ソースだけで,実行するときちんと表示されます)。それが何らかの影響を与えているのかも・・・?
同じバージョン(ab424)を職場でも使っているのですが,そちらの方は文字化けしないのですが・・・。

よろしくお願いいたします。

by Indigo Visualist » 2006年9月17日(日) 13:03

それはただ単にプレーンなテキストボックスで、スタイルやイベントなども設定してないのですよね?
メモ帳などを開いて、文字を入力してみて下さい。同じ現象が起こりませんか?
起こったら、もしかするとあなたの環境の問題かも知れません。
僕も以前同じ現象に遭遇したと思うんですが、詳しく思い出せません・・・。
OSかIMEの問題かも・・・?

キャレット | が残って困っています。

by hide21 » 2006年9月16日(土) 22:27

Editボックスで半角文字を入力すると,キャレット記号「|」が入力した文字の半角の半分だけ移動した位置と正規の位置(文末)の2箇所に出てきます。入力された文字をカーソルで移動すると,直前のキャレットと正規のキャレットが2箇所表示されてしまいます。
どうしてこなるのか,いろいろ調べてもわかりませんでした。どなたか解決策を教えていただけないでしょうか?
なお,全角文字や漢字の半角ではそのようなことは起こりません。

ページトップ