こんにちは、川合です。 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/