こんにちは、川合です。
ZAKKY さんは 2003/03/30 07:51:16 の「[OSASK 5875] Re: ウィンドウ
を移動するとエラーが…。」で書きました:
>ウィンドウを移動するとエラーが出るのはウィンドウタイトルが規定の文字数を
>オーバーしているときだそうです。文字数の計算方法はintroaに書いていると思
>います。
>私も以前そのバグを指摘されまして(汗
それについては、
wintitle = lib_opentextbox(0x1000, Null, 0, 10, 1, 0, 0, window, 0x00c0, 0);
lib_putstring_ASCII(0x0000, 0, 0, wintitle, 0, 0, "C.V.T.G 01");
を見る限り問題ないように見えます。
じゃあどこが問題なのか、ということになりますが、実はまだチェッ
クしていないのではっきりしたことは言えません。しかし明らかに間違
っている部分は見つけたので、それを指摘しておきます。
lib_loadfontset(1, 0x0210, 3, fontset);
lib_loadfontset0(0x80000001, 0x0220);
1: lib_makecharset(0, 0x0230, 0x0210, 3, 0, 'a');
2: lib_makecharset(0, 0x0240, 0x0220, 0x40, '@', '@');
lib_makecharset(0, 0x0250, 0, 0, 0, 0);
3: textbox = lib_opentextbox(1, Null, 0, 49, 14, 0, 0, window, 0x0230, 0);
これはキャラクターセットを作って、テキストボックスを用意してい
るところです。説明のために、部分的に行番号をふっています。どこが
おかしいかと言う前に、まずは文の説明を書きます。
1: キャラクターコード97,98,99を0x210のフォントの最初から割り当て
2: キャラクターコード64〜127を0220のフォントの64番目から割り当て
3: 使用するキャラクターセットは0x230、空白キャラクターコードは0
ええと誤解のないように言っておくと、
'a' == 97, 0x40 == 64, '@' == 64
です。
これはちょっとおかしいと思いませんか?
(1)キャラクターコード97,98,99は1:と2:とで思いっきり重複している
(2)空白のキャラクターコードが0に指定されているが、キャラクターコ
ードは64〜127までしか設定されていない
じゃあどうすればいいのか?・・・たとえばこうするのはどうでしょ
うか?
(1)キャラクターコード0〜96を0x220から持ってくる
(2)97〜99を0x210から持ってくる
この場合だと、3:はそのままでよくて、1:と2:が次のように変更にな
ります。
1: lib_makecharset(0, 0x0230, 0x0210, 3, 0, 'a');
2: lib_makecharset(0, 0x0240, 0x0220, 0x61, 0, 0);
この方法ではなくてもいいですが、とにかく未定義のフォントを利用さ
せたり、定義を重複させたりはしないようにしてください。
しかしこの修正でバグが直るかどうかは分かりません。直らなかった
らまた質問してください。今度こそちゃんとどこが原因が突き止めて、
テストしてから指摘しますので。
それでは。
--
川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/