Future BASIC II-J Mailing List

- fb-ml:550〜599まで -

注意
この色の文字は「引用」を表しています。また、連絡メール等は削除してあります。

Subject: [fb-ml 550] Re: MACTCP
 たばた です。

At 2:34 AM 97.5.20, Tsutomu YANO wrote:
>昔ダウンロードしたMPWパスカルインターフェイスを見ていたらMACTCPのインターフェイスがありました。  おお。ありがとうござます。これを入手先を是非教えてください。

 おおっ、PASCAL インターフェイスに含まれているんですね。APPLE の TCP用開発キットをかわんと手に入らんとばかり思っていた。しかし、なんかユーザー定義関数をつくったり呼び出したりするやつばっかですが、よくわからん(^^;)
 わたしもよくわかりません。(^^

AppleのOTのページを発見したのですが、置いてあるサンプルプログラムは C++ とかで、、よくわからん (;_;)

Subject: [fb-ml 551] 再度質問です
 下記のようなものを作っているんですが、解らないことだらけで誰か助けて下さい。
1、
EDIT FIELD 5をスクロールバー付きにしたい。
2、
LOCAL FN doa(w#)の結果をEDIT FIELD 5に入れたい。まだ、こういった感じの式が沢山ありますのでそれらもこのFieldに入れたい。
3、
MENUは今回コピーしてないですが、MENUで印刷を選んだときに全て印刷もしくはEDIT FIELD 5のみを印刷する方法。
4、その他、気付いたところを指摘して下さい。
よろしくお願いします。
DIM programEnds
END GLOBALS

LOCAL FN build
  WINDOW 1,,(0,0)-(500,500)
  TEXT _sysFont,12
  EDIT FIELD 1, "",(60,60)-(130,80),_framed
  EDIT FIELD 2, "身 長",(10,60)-(50,80),_statnoframed
  EDIT FIELD 3, "",(210,60)-(280,80),_framed
  EDIT FIELD 4, "体 重",(160,60)-(200,80),_statnoframed
  EDIT FIELD 5, "",(360,60)-(430,80),_noframed_anyLines_bottomLine
  EDIT FIELD 6, "BSA",(310,60)-(350,80),_statnoframed
  EDIT FIELD 7,,(10,100)-(460,480),_framed

  BUTTON 1,_activeBtn,"計 算",(370,10)-(430,30),_shadow
END FN

LOCAL FN bsa(height1#,weight1#)
  bsa# = 0.007184 * weight1#^0.424 * height1#^0.725
  EDIT$(5) = USING "#.###" ; bsa#
END FN

'--------------------------------------------------------
'DOA
'--------------------------------------------------------
LOCAL FN doa(w#)
  PRINT
  PRINT "DOA&DOB全量20ml(開始量:3μg/kg/min)"
  PRINT "            0.5N"; "    1.0N"; "    1.5N"; "    2.0N"; "    2.5
N"; "    3.0N"
  PRINT "==========================================================="

  FOR i = 1 TO 4
    k# = i * 50
    PRINT USING "#.#" ; i*0.5 "A(";
    PRINT USING "###"; k# "J)";
    FOR x = 1 TO 6
      s# = k#/20/60/w#*1000*(0.5*x)
      PRINT USING "##.###" ;s#"   ";
    NEXT
    PRINT
  NEXT
END FN

LOCAL FN doDialogEvnts
  evnt  = DIALOG(0)
  id    = DIALOG(evnt)
  SELECT evnt
    CASE _btnClick
      LONG IF id = 1
        height# = VAL(EDIT$(1))
        weight# = VAL(EDIT$(3))
        FN bsa(height#,weight#)
        FN doa(weight#)
      END IF
    CASE _wndClose
      programEnds = _true
  END SELECT
END FN


FN build
ON DIALOG FN doDialogEvnts

DO
  HANDLEEVENTS
UNTIL programEnds

Subject: [fb-ml 552] Re: 開発状況
山下 渉です。

TNKさん、まぎらわしくてごめんなさい。(/・・\;)

山下さんのところではCOMPILE命令はどうだったのでしょうか?
凄く気になります。

もう一度、見直してみますと、メールからコピー&ペーストする際に"test.main"の記述で、

COMPILE 0, _MacsBugLabels _caseInsensitive

をペーストするのを忘れてました。
ペーストし直してテストすると、エラーが出ました。

今までは、.mainファイルと.inclファイルは、あらかじめ雛型ファイルを作成し、その雛型ファイルをもとにコーディングをしてましたので、COMPILEオプション設定については完全に頭から抜けてました。(前に作った自分のFBファイルを見直してみると、COMPILEの設定を.inclファイルも.mainファイルと同様の設定にしてました。)
初心者(私)はこういった手抜きはしないほうがよいのかもしれないと思いました。

重ね重ねすみません。

>え、COMPILEオプションは、全incl と main で一致する必要があります。mainに COMPILEオプションを使ったら、inclにも同じCOMPILEオプションが必要です。たしかに考えてみたらあたりまえで、ファイルごとにオプションが違っていたら、コンパイラが混乱します(^^;)
ベンさん、勉強になりました。

Subject: [fb-ml 553] Re: MacTCP Programming!
須澤です

http://www.ids.net/~paumic/FutureBasic/Code/fbfinger.sit.hqx
にFB FingerというFREEWAREがあります。
解説には
Utilizes a TCP connection, and communicates with an Internet host to finger an account
とあるので役にたつかもしれません。
Masaaki Tomuraさんというかたが作られたようです。

Subject: [fb-ml 554] Re: MacTCP Programming!
 たばたです。

At 6:39 AM 97.5.21, HIS wrote:
http://www.ids.net/~paumic/FutureBasic/Code/fbfinger.sit.hqxにFB FingerというFREEWAREがあります。
 早速downloadしてみました。おお、これこそ私が求めていたものです。
情報ありがとうございました。これからソースを読んでみます。

Subject: [fb-ml 555] Re: イラストレータ
古籏一浩です。
ちょっと遅レスです。

At 23:09 97.5.16 +0900, 竹内亨 wrote:
イラストレーターのSDKはアドビのホームページでダウンロードできます。
 結局場所がよくわからないので、とりあえずNiftyからダウンロードしてきました。ホームページの場合、どのアドレスなんでしょう?
 トップページから探索したり、検索したけどIlluystrator PlugInはちょっと見つかりませんでした。Type-1 fontとかTIFFはあったけど。

よろしければ私のホームページをごらんください。
そして作り方がわかればぜひ教えてください。

 ちょっと翻訳して解読してみます。
 でも来週末にならないと時間がないので・・・

Subject: [fb-ml 556] やはり 255文字以上変数に入れたい。
メーリングリストの皆様、こんにちは。

今日、やっとHyperCardのXFCNを作ることに成功しました。
手探りながらもなんとか。。。という感じです。

表題の件なのですが、FutureBASICで作ったXFCNに送ったパラーメーターはstr255$(0)とかの配列?変数に格納されます。

で、str255$(0)をそのままxCmdPtr&.returnValue&にいれてHyperCardに返す実験をすると、返り値は255文字以降は消えてしまいます。

(私が作っているのは、これの中を1バイト単位で検索するXFCNなのですが、)

内心やっぱりかとは思っているものの、これを解決する方法はありませんでしょうか?

グローバルでstr255$は
↓このように宣言されているのですが
DIM str255$(15)
例えばこの文字列変数のバイト数を無制限にするような方法はないのでしょうか?

どうかよろしくお願いいたします。
以下に私の作った部分を載せます。
'"XFCNの第1パラメータに255文字以上の文字を送る。"
LOCAL FN ExecuteXcmdHereFunction(xCmdPtr&,str255$)
DIM 255 tmp$
strPtr& = @tmp$
tmp$ = str255$(0)
'"わからずながらも実験の結果tmp$に入れた値が返り値になることにきずきました"
xCmdPtr&.inArgs0&  = strPtr&              'convert error message to
xCmdPtr&.xRequest% = _xReqPasToZero       'C-string format (chars + nul)
FN JumpToCallback(xCmdPtr&)               'enter callback routine
xCmdPtr&.returnValue& = xCmdPtr&.outArgs& 'put C-string hndl into 
xcmdBlock
END FN
'"これで255文字以降は消えてしまいます。"

Subject: [fb-ml 557] Re: 開発状況
山下さんレスどうもです。

今までは、.mainファイルと.inclファイルは、あらかじめ雛型ファイルを作成し、その雛型ファイルをもとにコーディングをしてましたので、COMPILEオプション設定については完全に頭から抜けてました。
(前に作った自分のFBファイルを見直してみると、COMPILEの設定を.inclファイルも.mainファイルと同様の設定にしてました。)
初心者(私)はこういった手抜きはしないほうがよいのかもしれないと思いました。

これって、実はベテランのミスでわ?

これからも、色々教えてくださいね。

Subject: [fb-ml 558] Re: 印刷が解らない
At 9:54 AM 97.5.20, Hiroyuki-Tsurimoto wrote:
 初歩の質問ですいませんがよろしくお願いします。
INPUT命令で、身長・体重等を入力を受けて、そのデータを元にいろんな計算をする関数を作成したのですが、印刷が旨くできないので悩んでいます。印刷というメニューも作ったのですが、単純に画面上のものを印刷できればいいんです。

 え、これは描画の場所を、標準である「画面」から、「プリンタ」に変更してやります。で、画面に描画するのに PRINT やら USING やらを使ったと思いますが、これをもう一度 (まったく同じように) やってやればいいです。全描画がプリンタに為されます。とにかく PRINT やらでどんどん書いていきます。たぶんそのために、INPUTで入力を受ける変数の扱いを少々考える必要があるでしょう。

ROUTE _toPrinter

 で、描画をプリンタにできます。プリンタへの印刷が終わったら

ROUTE _toScreen

 で画面に戻しておかないと、これ以降の描画がすべてプリンタに行われてしまうので、注意してください。

 "Programming the Macintosh With FB2" という冊子の p133、LESSON 22 は必ず果たしてください。ちなみに、この冊子は (ほかのプログラム言語の知識があるならともかく) 読むだけでなく、きっちり入力してやってください。そうすれば、プリンタの扱いもきちんと分かると思います。

#まあ、紙の扱いを除けば、ウインドウになんか書くのとかわりませんけどね。

 もちろん、マックの印刷の基本として、設定ダイアログを表示しなくちゃいけません。Page Setup には DEF PAGE 命令で、Print ダイアログは DEF LPRINT で開けます。

 また、今回はいらないと思いますが、大量に印刷するには、タイミングを自分ではかって、CLEAR LPRINT 命令で紙を排出・新しい紙に移行する必要があります。

 今回は ROUTE _toPrinter と ROUTE _toScreen で用が足りるとおもいますが、念のため、HANDBOOK の p143 からの PRINTER OUTPUTの章をじっくりとお読みください。

 読んでみてもまだ分からなくとも、すくなくとも「このようにしたんで、うまくいくはずなんだけども、なぜかうまくいかん。教えてください」くらいまではいけると思います。がむばるのだ。

 INPUTじゃなく、EDIT FIELD を使ってやりたいんですが、EDIT FIELDで得られたDATAを計算するには、VALで数字に変換して、また、あるFIELDからマウスが出たときに計算が実行されるには等々、解らないことばかりです....!
よろしくお願いします。

 こちらは別発言があったようなので、そちらをじっくり読んでから考えます(^^;)

Subject: [fb-ml 559] Re: 開発状況
山下 渉です。

> 今までは、.mainファイルと.inclファイルは、
>  … 中略 …
>手抜きはしないほうがよいのかもしれないと思いました。
TNKさん、->
>これって、実はベテランのミスでわ?

いや、あの〜、その〜....。
FB II日本語版が発売されてから購入した、FB歴8ヶ月ちょっとのまだまだ初心者なんです。(^^;)

これからも、色々教えてくださいね。
いえいえ、こちらこそ宜しくお願いします。(^o^)

明日は仕事が早出なので、これにて失礼致し候ふ。
では、また。

Subject: [fb-ml 560] Re: 印刷が解らない
古籏一浩です。 At 0:13 97.5.22 +0900, Tsutomu YANO wrote:  "Programming the Macintosh With FB2" という冊子の p133、LESSON 22 は必ず果たしてください。ちなみに、この冊子は (ほかのプログラム言語の知識があるならともかく) 読むだけでなく、きっちり入力してやってください。そうすれば、プリンタの扱いもきちんと分かると思います。
 私のページにも初心者講座でちょっとだけ用意してあったと思います。
 たしか某氏に頼まれて、それでサンプルとして作成したような・・・

 だんだんと初級編、中級編とか長くなってきたので、ジャンル別にしようかな〜とも思っています。
 ゲーム編とか、印刷編とか・・・

Subject: [fb-ml 561] Re: NAGI-Pさんのホームページ
古籏一浩です。

At 3:09 97.5.17 +0900, Takaomi Ono wrote:
 話題のNAGI-Pさんのホームページは、
 http://www.hc.t.u-tokyo.ac.jp/~nagi/nps/
 に変わったみたいです。先ほど、覗きに言ったところ、大戦略の

 確認してきました。
 改装じゃなくて、本当に引っ越しただけでした(^^;
 Win/Mac両方のゲームが作れるって凄いなあ。

Subject: [fb-ml 562] Re:印刷の件
ベンさんどうもです。
印刷はおかげさまで旨く行きました。
NIFTYでもお世話になりました、これからこちらでお世話にないりますのでよろしくお願いします。
やっとPGの流れが理解でき、EDIT FIELDを使った計算もできるようになりました。
今は、EDIT FIELDに計算結果を代入する方法を勉強しているんですが、よく解りません。
Local FN・・・ For〜NEXT ・・・END FNで作成した関数を、改行・After・
Before等で代入する方法が解らない状態です。
普通に、EDIT$(11) = USING "###.###" ; 1000*500/50 だったらいくんですが、こういう式の結果を 改行させないで、連ねて表示させる方法が.....?
今後ともよろしくお願いします。

Subject: [fb-ml 563] Re: MACTCP
須澤です。

MPWパスカルインターフェイスの基本セット(?)をダウンロードすると以下のファイルがダウンできます。参考にして下さい。
ADSP.p
ADSPSecure.p
AEObjects.p
AEPackObject.p
AERegistry.p
AEUserTermTypes.p
AIFF.p
Aliases.p
AppleEvents.p
AppleGuide.p
AppleScript.p
AppleTalk.p
ASDebugging.p
ASRegistry.p
Balloons.p
CardServices.p
CMAcceleration.p
CMApplication.p
CMComponent.p
CMConversions.p
CMICCProfile.p
CMMComponent.p
CMICCProfile.p
CodeFragments.p
Collections.p
ColorPicker.p
ColorPickerComponents.p
CommResources.p
Components.p
ConditionalMacros.p
Connections.p
ConnectionTools.p
Controls.p
ControlStrip.p
CRMSerialDevices.p
CTBUtilities.p
CursorCtl.p
CursorDevices.p
DatabaseAccess.p
DeskBus.p
Devices.p
Dialogs.p
Dictionary.p
DigitalSignature.p
DisAsmLookup.p
ObjIntf.p
Disassembler.p
Perf.p
DiskInit.p
Disks.p
Displays.p
Drag.p
Editions.p
ENET.p
EPPC.p
ErrMgr.p
Errors.p
RTLib.p
Events.p
fenv.p
Files.p
FileTransfers.p
FileTransferTools.p
FileTypesAndCreators.p
Finder.p
FixMath.p
Folders.p
Fonts.p
fp.p
FSM.p
GestaltEqu.p
GXEnvironment.p
GXErrors.p
GXFonts.p
GXGraphics.p
GXLayout.p
GXMath.p
GXMessages.p
GXPrinterDrivers.p
GXPrinting.p
GXTypes.p
HyperXCmd.p
Icons.p
ImageCodec.p
ImageCompression.p
IntEnv.p
IntlResources.p
Lists.p
LowMem.p
MachineExceptions.p
MacRuntime.p
MacTCP.p
MC68000Test.p
MediaHandlers.p
Memory.p
Menus.p
MIDI.p
MixedMode.p
Movies.p
MoviesFormat.p
Notification.p
OCE.p
OCEAuthDir.p
OCEErrors.p
OCEMail.p
OCEMessaging.p
OCEStandardDirectory.p
OCEStandardMail.p
OCETemplates.p
OSA.p
OSAComp.p
OSAGeneric.p
OSUtils.p
Packages.p
Palettes.p
PasLibIntf.p
PCCardTuples.p
PictUtils.p
Power.p
PPCToolbox.p
Printing.p
Processes.p
QDOffscreen.p
Quickdraw.p
QuickdrawText.p
QuickTimeComponents.p
Resources.p
Retrace.p
ROMDefs.p
SANE.p
ScalerTypes.p
Scrap.p
Script.p
SCSI.p
SegLoad.p
Serial.p
SFNTTypes.p
ShutDown.p
Signal.p
Slots.p
SocketServices.p
Sound.p
SoundComponents.p
SoundInput.p
Speech.p
StandardFile.p
Start.p
Strings.p
Terminals.p
TerminalTools.p
TextEdit.p
TextServices.p
TextUtils.p
Threads.p
Timer.p
ToolUtils.p
Translation.p
TranslationExtensions.p
Traps.p
TSMTE.p
Types.p
Unmangler.p
Video.p
Windows.p
WorldScript.p
以上です。
別の所でQuickDraw3Dのインターフェイスも入手できました。しかし、これはコンバートしてみると何だか抜けてるところがあるようで、今一つ良く分かりません。
それと、もしかしたらDrag&Dropのインターフェイスもあるかもしれません。
いずれにしても使い方が分からない(^^;;
みんなで研究しましょう。
それでは。

Subject: [fb-ml 564] Re: イラストレータ
古籏一浩様、こんにちは。
イラストレーターのSDKですが失礼しました。

結構いりくんだ場所にあります。
http://www.adobe.com/
Support & Services ←クリック

http://www.adobe.com/supportservice/main.html
Developer Relations←クリック

http://www.adobe.com/supportservice/devrelations/main.html
SDKs ←クリック

http://www.adobe.com/supportservice/devrelations/sdks.html

ただし、見にいったところ、Illustrator6.0のSDKしかありませんでした。
私の持っているのはIllustrator5.5のSDKです。
必要でしたらご連絡ください、メールでお送りいたします。

チュートリアル和訳ですが私のホームページのもう少しわかりやすいところに移動しました。
最初のページの左のメニューのなかにリンクをいれました。
もし、見つけられなかった方、ごめんなさい。

Subject: [fb-ml 565] Re: 印刷の件
At 7:13 AM 97.5.22, H-Tsurimoto wrote:
ベンさんどうもです。
印刷はおかげさまで旨く行きました。
NIFTYでもお世話になりました、これからこちらでお世話にないりますのでよろしくお願いします。

 引き続きよろしく(^^)

改行させないで、連ねて表示させる方法が.....?
今後ともよろしくお願いします。

 え、これについては NIFTY のほうに書きました。というのは、もともと NIFTY に書き込まれた質問だったので、その答えをこっちにかいちゃうと、やはり問題ではないかと。

 というわけで、基本的に NIF の質問は NIF で答えることにしてますので。
 で、どうも PG つかいになっているようなので、551の質問はいったんチャラってことでいいでしょうか。また PG のほうでよく分からないなら、質問してもらうってことで。

Subject: [fb-ml 566] Re: イラストレータ
古籏一浩です。

At 20:58 97.5.22 +0900, 竹内亨 wrote:
私の持っているのはIllustrator5.5のSDKです。必要でしたらご連絡ください、メールでお送りいたします。
 Niftyから落としてきました。
 QuarkXpressでないと読めないと言う笑えないオチがありましたが(笑)

最初のページの左のメニューのなかにリンクをいれました。
もし、見つけられなかった方、ごめんなさい。

……PIONEER MPC-GX1/40M/1GHD とおる VED04321@niftyserve.or.jp……
…………URL=http://www.asahi-net.or.jp/~bj5t-tkuc/i-flm.html…………
    ↑SDK和訳のページへ。

 見まして、和訳の部分はテキストでひっぱってきました。
 これは、ちょっと時間がかかりそう・・・

Subject: [fb-ml 567] テキスト追加にて...
ベンさんどうもです。
NIFTYではお世話になりました、これからこちらの方でまたお世話になります。
この前教えてもらった、関数を使ったんですが、"関数が定義されていないか、間違 って定義されています"といったアラートが出て来ます、どうすれば良いんでしょう か?

FN TEappend(fieldNum, addStr$)

この文全てが駄目なんです、マニュアルも何回か読んだんですが解りません。

Subject: [fb-ml 568] テキストを追加で...
ベンさんどうもです。
以下の関数を追加したのですが、EDITフィールドには何も入力されませんのですが、どうしてなんでしょうか?
再三に渡りどうもすいませんがよろしくお願いします。
LOCAL FN TEappend(theField, theText$)
  AUTOCLIP = 0
  TEHndl& = TEHANDLE(theField)
  LONG IF TEHndl&
    txtLgth = {[TEHndl&]+_TELength}
    CALL TESETSELECT(txtLgth,txtLgth,TEHndl&)
    CALL TEINSERT(@theTxt$ + 1,LEN(theTxt$),TEHndl&)
  END IF
END FN

Subject: [fb-ml 569] Re: テキストを追加で...
中野@Kyoto-inet です。

H-Tsurimotoさん(hiroyuki@mb.aikis.or.jp)
》 TEHndl& = TEHANDLE(theField)
TEHndl& = FN TEHANDLE(theField)
が正解です。C 言語と違って,FB では ToolBox 関数は FN を付けて呼び出す必要があります。

Subject: [fb-ml 570] Re: テキストを追加で...
 ベン/矢野 勉 です。

At 2:30 PM 97.5.23, NAKANO Takayuki wrote:
H-Tsurimotoさん(hiroyuki@mb.aikis.or.jp)
》 TEHndl& = TEHANDLE(theField)

TEHndl& = FN TEHANDLE(theField)
が正解です。C 言語と違って,FB では ToolBox 関数は FN を付けて呼び出す必要があります。

 ちがうピョーン。

 TEHANDLE は FB 定義のステートメントで、ToolBox ではありません。よってもと のままで正しいのです。

Subject: [fb-ml 571] Re: テキストを追加で...
 ベン/矢野 勉 です。

At 8:45 AM 97.5.23, H-Tsurimoto wrote:
以下の関数を追加したのですが、EDITフィールドには何も入力されませんのですが 、どうしてなんでしょうか?
再三に渡りどうもすいませんがよろしくお願いします。
 LOCAL FN TEappend(theField, theText$)
   AUTOCLIP = 0
   TEHndl& = TEHANDLE(theField)
   LONG IF TEHndl&
     txtLgth = {[TEHndl&]+_TELength}
     CALL TESETSELECT(txtLgth,txtLgth,TEHndl&)
     CALL TEINSERT(@theTxt$ + 1,LEN(theTxt$),TEHndl&)
   END IF
 END FN

 ということは、未定義のエラーはでないんですね? すると、この関数の定義は、関数が呼び出されるよりも前に、きちんと定義されているということに...

 つまり、FN TEappend(1, "文字列") とかで呼び出すよりも上に、上記の関数定義を挿入したので間違いないですね?

 とすると、引数の間違いの可能性が高い。theText$ に実際に文字列をいれていない、なんてことはないだろうから、theField のほうに、存在しないフィールド番号をいれてませんか? 

 PG を使っている場合は、PG上でフィールドを選択し、Object -> Get Info と選択したときにでるダイアログ上の、Constants という部分に書かれている内容が、フィールド番号のための定数となります。普通はフィールドの目的に応じて _NameFld とか、自由に書き換えて使います。定数ってのは理解してますよね? よって普通 PGでは、番号そのものは使いません。定数が _NameFld なら、

FN TEappend(_NameFld, "入れたい文字列")
 という呼び出しになります。  よくわからないなら、実際に関数を呼び出している部分を引用して、もう一度質問 してください。ソースコード無しでは問題を特定できませんので。

Subject: [fb-ml 572] 再度お願いします。
 以下にソースコードをコピーしましたので見て下さい。
もう一度説明します、EDIT$(7)のデーターをFN AddToField(11,weight#)に渡して、計算結果をEDIT$(11)に改行しながら入れたいのです。
EDIT$(11)はスクロールバー付きで、フォントは大阪です。
EDIT$(11)には何か入力されているかの様に改行はきちんとされてますし、何回もボタンをクリックすると、スクロールの下段の方に文字化けしたものが出てきます。
1回だけのクリックだと空白行でカーソルは中程までいってます。
きっとどこか勘違いしているのだと思うので、よろしくお願いします。
'インクルード
'========================================================
LOCAL FN TEappend(theField, theText$)
  AUTOCLIP = 0
  TEHndl& = TEHANDLE(11)
  LONG IF TEHndl&
    txtLgth = {[TEHndl&]+_TELength}
    CALL TESETSELECT(txtLgth,txtLgth,TEHndl&)
    CALL TEINSERT(@theTxt$ + 1,LEN(theTxt$),TEHndl&)
  END IF
END FN


LOCAL FN AddToField(fieldNum, w#)
  DIM addStr$
  
  EDIT FIELD fieldNum                             '"フィールドを active にしておく
  
  addStr$ = "DOA&DOB全量20ml(開始量:3μg/kg/min)"
  FN TEappend(fieldNum, addStr$)
  addStr$ =  "            0.5N    1.0N    1.5N    2.0N    2.5N    0N"
  FN TEappend(fieldNum, addStr$)
  addStr$ = 
"==============================================================="
  FN TEappend(fieldNum, addStr$)
  FOR i = 1 TO 4                                  
    k# = i * 50
    addStr$ =  USING "#.#"; i*0.5
    addStr$ = addStr$ +  "A("
    addStr$ = addStr$ + USING "###";k#
    addStr$ = addStr$ + "J)"
    FOR x = 1 TO 6
      s# = k#/20/60/w#*1000*(0.5*x)
      addStr$ = addStr$ + USING "##.###";s#
      addStr$ = addStr$ + "   "
    NEXT
    TEKEY$ = CHR$(13)                             '"改行コードをフィールドに送る。
  NEXT
END FN
'==========================================================================
'メインルーチン
'=========================================
"Action:Button"
'=========================================
SELECT gWhichClass
    height# = VAL(EDIT$(5))
    weight# = VAL(EDIT$(7))
    FN bsa(height#,weight#)
    fontName$ = "Osaka−等幅"
    TEXT font%,10
    FN AddToField(11,weight#)
END SELECT
RETURN

Subject: [fb-ml 573] Re: テキストを追加で...
中野@Kyoto-inet です。

ベン/矢野 勉さん(benbrand@osk2.threewebnet.or.jp)
》> TEHndl& = FN TEHANDLE(theField)
》> が正解です。C 言語と違って,FB では ToolBox 関数は FN を付けて呼び出す必要があります。

》 ちがうピョーン。
》 TEHANDLE は FB 定義のステートメントで、ToolBox ではありません。よってもとのままで正しいのです。

 ガーソ。いちおう Reference をチェックしたんですが,TEHANDLE の存在を見落としていたようです。まだまだ修行が足りない....。

》 よくわからないなら、実際に関数を呼び出している部分を引用して、もう一度質問してください。ソースコード無しでは問題を特定できませんので。
 新規にファイルを作成して,関数と,関数を呼び出す部分だけのプログラムを書いて,うまく動作するか調べるのも手です。
 FB 関数の動作が Reference を見てもよく分からないときは,この手を使っています。

Subject: [fb-ml 574] テキストを追加でお礼
 ベンさん中野さんどうもありがとうございました。
中野さんがいってくれたように...やってみて原因が解りました。(;_;)
やっと解決出来ました。今回みなさんから大変多くを学べました事を感謝いたします。
これに懲りず今後ともよろしくお願いします......質問しか出来ませんが (^_^;)
 新規にファイルを作成して,関数と,関数を呼び出す部分だけのプログラムを書いて,うまく動作するか調べるのも手です。
 FB 関数の動作が Reference を見てもよく分からないときは,この手を使っています。


Subject: [fb-ml 575] Re: やはり 255文字以上変数に入れたい。
 ベン/矢野 勉 です。

At 11:16 PM 97.5.21, 竹内亨 wrote:
で、str255$(0)をそのままxCmdPtr&.returnValue&にいれてHyperCardに返す実験をすると、返り値は255文字以降は消えてしまいます。(私が作っているのは、これの中を1バイト単位で検索するXFCNなのですが、)内心やっぱりかとは思っているものの、これを解決する方法はありませんでしょうか?
 やっと XCMD のことを調べおえました。ちょっと複雑ですが、XCMD をされるほどならば理解できるでしょう。じっくりご覧ください。FB では、xCmdBlock は次のような定義になっています。
DIM RECORD xCmdBlock
  DIM xParamCount%
  DIM xParams&;64
  DIM xReturnValue&
  DIM xPassFlag%
  DIM xEntryPoint&
  DIM xRequest%
  DIM xResult%
  DIM inArgs0&
  DIM inArgs1&
  DIM inArgs2&
  DIM inArgs3&
  DIM inArgs4&
  DIM inArgs5&
  DIM inArgs6&
  DIM inArgs7&
  DIM outArgs0&
  DIM outArgs1&
  DIM outArgs2&
  DIM outArgs3&
DIM END RECORD .xCmdBlock
 見てのとおり、FB ではレコード内部に配列をもてないという、どうにかしてほしい制限があるため、配列部分の定義が変わっています。HyperCard が XCMD やら XFNC に渡す引数は、xParams& の部分に入っています。これは本当は xParams&(15) とでも定義されるところなんですが、配列が定義できないために、4 (ロング長) * 16= 64 で、64バイトの一つの変数として定義しています。

 で、最大16個の引数は xParams& の配列に、最初はハンドルとして渡ってきます。XCMD Template の HyperXCMD.MAIN ファイルが、この xParams& を FN ZeroToPasをつかって、str255$(15) へと内容を切り分けてくれるわけで、おかげでわれわれは、str255$(15) という配列をつかって引数を調べることができるわけです。
 普段はこれはこれで便利なんですが、文字列型は 255 文字に制限されてますので、_この変換の段階で_もともと xParams& にあった、256文字以降の文字は消えてしまうわけです。

 というわけで、結局 str255$の配列をつかわず、必要になったときに xCmdBlockから引数を直接、ハンドルとして取り出せばいいわけです。それなら、全情報を取り出せます。
 実際には、XCMD では xCmdBlock は xCmdPtr& として渡ってきますので、これから 取り出します。引数の総数は paramCount でわかりますので、引数の数だけループす ればいいでしょう。

 nthHandle& = [xCmdPtr&+_xParams+ (4 * (0から15までの配列番号))]

 これで nthHandle& に、指定した配列の内容 (ハンドル) が帰されます。これはCストリングへのハンドルですが、バイト単位の処理はC文字列のほうが楽ですし、このままこのハンドルからポインタをとりだして処理してしまいましょう (ハンドルをロックするのをわすれずに!)。

 おまけ。FB についてくる XCMD Glue は、STAZ が余計なことをしています。例えば、通常は ZeroToPas というグルーがそれでして、Handbook の p359 をみれば分かるように、_配列番号を渡すと_、xParams&配列から内容を取り出し、パスカル文字列に変換するように定義されています。まあ、ある意味では便利です。

 でも、もともとはそんなふうには定義されていませんっ!

 もともとは、引数には_C文字列を渡すと_、パスカル文字列が返ってくるようになっています。FB では xParams&配列の扱いがややこしくなっているので、親切心のつもりなんでしょうが、余計なお世話です。おかげで ZeroToPas を、純粋にC文字列からパスカル文字列への変換ルーチンとしては使えなくなっています。

 で、STAZ にも苦情がいったんでしょうが、いま STAZ のホームページの Whats New から FB Updater のページに飛びますと、XCMD Glue の新版がでています。これはZeroToPas ももとの定義のとうりに変更されたんですが、こんどはおかげで HyperXCMD.MAIN ファイルが使えなくなった! というのは、HyperXCMD.MAIN ファイルでは前述のとおり、旧式の ZeroToPas でもって str255$(15) への引数の変換をしているので、ここでおかしくなります。

 Glue をあげるなら、ほかのも直してくれよな〜

 まあ、ここだけ次のように直せば動くようです。以前ニフティのホームパーティがまだあったころに、ハンドル名UDIという方が一生懸命調べてくれました。UDIさんは ML にも来ているのでしょうか?
 LONG IF prmCount% <> 0
   FOR j = 1 TO prmCount%                        'cycle thru parameters
     FN ZeroToPas (xCmdPtr&, j-1, @str255$(j-1)) 'converting all C-strings to
   NEXT                                          'Pascal strings
 END IF
          ↓

 LONG IF prmCount% <> 0
   FOR j = 0 TO prmCount% - 1                    'cycle thru parameters
     FN ZeroToPas (xCmdPtr&, [[xCmdPtr& + _params + j * 4]], str255$(j))
   NEXT                                          'C string to Pascal strings
 END IF
 これで、新版のグルーもとりあえずは動くはずです。

 他にもちょろちょろ直されているので、一応ダウンロードしましょう。MODE から日本語版アップデータをもらったひとは、そこにも入っているようです。

Subject: [fb-ml 576] 再度印刷について質問です
 この前から教えてもらって、旨くいってるんですが、印刷がやはり旨くいきません。
以下に書いた方法では、EDIT$(11)のみが文字化けするし、途中で印刷が終了して最終文字まで印刷されません。EDIT$(11)はこの前"ベンさん"から教えてもらった、計算結果が収められてます。他のEDIT$()と違うのは計算結果が入るのと、スクロールフィールドになっているぐらいで、後フォントは初期設定のを使用で、大阪monoに設定してあります。お手数ですがよろしくお願いします。
LOCAL FN printDoc
  DEF LPRINT
  LONG IF NOT PRCANCEL
    ROUTE _toPrinter
    PRINT %(200,30) ; EDIT$(3)
    PRINT %(150,60) ; EDIT$(5) ; EDIT$(7) ; EDIT$(9)
    PRINT %(150,90) ; EDIT$(11)
    ROUTE _toScreen
    CLOSE LPRINT
  END IF
END FN
 また以下の方法だと文字化けせずに印刷できるんですが、僕には1つのEDIT$()しか印刷できません。
この方法で各フィールドが印刷できればいいんですが.....?
DEF FN printStyleFld(fldHndl&) USING gPrintStyleFld&

LOCAL FN printDoc
 DEF LPRINT
 LONG IF NOT TEHANDLE(_EF11WClass2)
  GET FIELD fldHndl&,_EF11WClass2
  FN printStyleFld(fldHndl&)
 END IF
END FN

Subject: [fb-ml 577] Re: 再度印刷について質問です
 ベン/矢野 勉 です。

 あー、EDIT$() 関数で得られるのは、256バイトの文字列型変数ですから、EDIT$(11) としても、フィールド11の255文字しか得られんのです。これ以上の情報を得るためには、ハンドルとしてフィールドの内部情報を得るしかない。それをやっているのが、下のほうの PrintDoc なわけです。

 さて、逆に下のほうの printDoc では、PG の PrintStyleFld をつかってますが、これは一つフィールドを印刷する度に紙を排出してしまう、という欠点が(^^;)

 問題の解決。255文字以上の情報のはいったフィールドの印刷方法は、HandBook のp145 の Printing specific edit fields and picture fields に例が出ています。
長々とソースがありますが、要するに、ROUTE _toPrinter でプリンタに描画を切り替えたあと、EDIT FIELD 命令で新しいフィールドを作ってやると、なんと印刷されるのです。この方法のポイントは、フィールドのサイズ/位置をどうするかにかかってますね。
----------------------------------------------------------
_dammyFld = 4500 '"新規につくるフィールド番号。適当です。

LOCAL FN PrintDoc
 DIM pageRect;0, top, left, bottom, right

  DEF LPRINT
  LONG IF NOT PRCANCEL
   '"先に11番フィールドの内容を得ておく
    GET FIELD fldContentH&, _EF11WClass2
      '"11番フィールドの高さをえる。
   '"PG の PRINT UTIL.FLTR の関数。
    fldHeight = FN getFieldHt(_EF11WClass2)
      '"印刷可能領域 (PG の関数)
    FN getPage(pageRect)

    ROUTE _toPrinter
    PRINT %(200,30) ; EDIT$(3)
    PRINT %(150,60) ; EDIT$(5) ; EDIT$(7) ; EDIT$(9)

      '"11番フィールドの印刷。描画開始位置は、
      '"上から90ピクセルとしておく
    LONG IF fldContent& <> _nil
        '"GET FIELD で得たハンドルからフィールドを
        '"新規作成する。
      top = 90 : bottom = top + fldHeight
      EDIT FIELD -_dammyFld, &fldContentH&, @pageRect, _noFramed, _leftJust
    END IF
    KILL FIELD fldContentH& '"ハンドルはいらなくなったら削除
    CLOSE LPRINT
  END IF
END FN
--------------------------------------------------------------

 これでいけるとおもいますけと、実験はしてません。要は新規フィールドは都合のいい位置に作るだけなんで、工夫してください。

 あと、EDIT$() なんかに、フィールド番号を直接指定してますけど、関心しません。せっかく PG ではフィールド番号のための定数を用意してくれるんだから (なんども言いますが、Get Object Info ダイアログの、Constants というフィールドのことね) それを使うべき。
 また、一箇所だけちゃんと _EF11Wclass2 とかいう定数をつかってますが、これもちゃんと PG で定数名変更しましょうよ。これだと _resultFld とかいう名前を付けておくと分かりやすいでしょ。プログラム上では定数 _resultFld が 11 だと認識されるようになるんです。

Subject: [fb-ml 578] Re: MACTCP
須澤です

アップルのSDKがあるサイト(http://17.126.23.20/dev/sdk.html)を見てきました
DRAG&DROPのSDKは1700Kほどありました。
誰かダウンロードしてください。
PHSじゃつらいです

Subject: [fb-ml 579] Re: やはり 255文字以上変数に ...
ベンさん、こんにちは。
丁寧な解説ありがとうございます。

>XCMD をされるほどならば理解できるでしょう。
私はまだまだ、ぜんぜん意味もわからずやっているので、これからベンさんの解説を見て、じっくり取り組んでいくことにします。
ありがとうございました。

Subject: [fb-ml 580] 印刷でのお礼
 ベンさんおかげさまで全て旨くいきました。
今まで教わったことは、何とな〜くわかるんですが説明が出来るほど未だ理解できてないです。
また、ご指摘受けた通り、Field参照番号に関しては自分でも時折解らなくなる事が多々あったのでこれからはきちんとした名前にします。(^_^;)
ところで、ベンさんのPGのページいつ頃出来るんでしょうか...?
楽しみにしています。(^○^)

Subject: [fb-ml 581] はじめまして,教えて下さい。
はじめまして,根来 武と申します。

先日,FB2を購入しました。数日触ってみましたが,とても解りやすい開発言語ですね。少し疑問が出てきましたので教えて頂けますか。

・FB2は68Kコードを生成しますが,ToolBoxルーチンは68Kコードなのでしょうか。ToolBoxがPPCのものもあるのなら,FB2からPPC_ToolBoxをCallすれば速度が向上するのかな?,Mac Programing初心者ですので,このあたりのアプリ側とToolBox側のコード種別と実行速度の関係がよくわかりません。

・ハンドブックのマウス位置取得サンプルを基に,お絵描きソフトを作っているのですが,イベントマネージャへのマウス位置問い合わせの方法では,マウスを素早く動かしたときに問い合わせ速度が追い付かず,描画されるラインがガクガクになってしまいます。市販のソフトなどはかなり高速な読み取りレートになっているように見えますが,マウスの位置を取得するのにイベントマネージャを介さずに,読み取りレートを上げる方法はないものでしょうか。サンプル通りにMOUSE(0)を発行してMOUSE(_holz),MOUSE(_vert)で取得していると私のMacにはZ80が入っているのではと思うくらい遅いのです。Inside Macも所持している分では調べたのですが,名案はなかなか思い浮かびません。ああ,今夜も眠れない...

・今は始めのとっつきの段階なのですが,BASICは数十年ぶりで勝手がわからずとまどっています。今も付属のマニュアルを必死に読んでおります。
 FB2を買うまでは,CPXなどのオブジェクト指向言語を使っていました。
 CPXがなかなかうまく使えずにPB2に乗り換えたのです。(恥;)
 FB2で戸惑っていることは,ドキュメントウインドウを複数開いた場合にウインドウ別にアトリビュートを持ちたいのですが,FB2での記述手法はマニュアルのどこを参考にすればいいのでしょうか。「ここを見ろ」というのを教えて頂けませんでしょうか。

FB2はロジックの構造が把握しやすくてとっても気に入りました。将来は私も返答できる立場になりたいと思います。みなさま,どうぞよろしくお願いいたします。

Subject: [fb-ml 582] Re: はじめまして,教えて下さい。
古籏一浩です。

At 12:17 97.5.26 +0000, 仙台7200/90 wrote:
・FB2は68Kコードを生成しますが,ToolBoxルーチンは68Kコードなのでしょうか。ToolBoxがPPCのものもあるのなら,FB2からPPC_ToolBoxをCallすれば速度が向上するのかな?,Mac Programing初心者ですので,このあたりのアプリ側とToolBox側のコード種別と実行速度の関係がよくわかりません。
 Toolboxは呼び出されるだけでFB2などが内包するわけではありません。
 powerPCネイティブコード化されているToolboxは高速に動作します。
 よく使われるCOPYBITSなどは格段に速度が違います。
 あと呼び出し側は68Kコードかppcコードかを区別しなくても大丈夫です。

・ハンドブックのマウス位置取得サンプルを基に,お絵描きソフトを作っているのですが,イベントマネージャへのマウス位置問い合わせの方法では,マウスを素早く動かしたときに問い合わせ速度が追い付かず,描画されるラインがガクガクになってしまいます。市販のソフトなどはかなり高速な読み取りレートになっているように見えますが,マウスの位置を取得するのにイベントマネージャを介さずに,読み取りレートを上げる方法はないものでしょうか。サンプル通りにMOUSE(0)を発行してMOUSE(_holz),MOUSE(_vert)で取得していると私のMacにはZ80が入っているのではと思うくらい遅いのです。Inside Macも所持している分では調べたのですが,名案はなかなか思い浮かびません。ああ,今夜も眠れない...
 読み取りレートを速くすることは出来ません。というか1/60単位でCPUの割り込みによってデータがバッファにため込まれます。
 高速に動かせば、どんなお絵かきソフトであっても座標は飛びます。
 結論からいうと入力後の処理が遅いという事です。
 入力後(前)の処理ループを短くすれば座標は飛ばなくなります。

Subject: [fb-ml 583] Re: はじめまして,教えて下さい。
古籏さん,ありがとうございます。
すぐに返事が頂けて,とても嬉しいです。漠然とした質問だったので,返事がもらえないのではと心配していたので,とてもありがたく思います。

Inside Macにも載っていましたが,やはり1/60secでしか座標は取れないのですね。今日,PhotoshopとPainterをよく観察したのですが,確かに座標飛びが確認できました。Photoshopは座標飛びが発生したら,直線上の中間座標を計算しているようですね。これと同等の機能は無事に作成することができました。やっとエアブラシの描画部分ができた感じです。これからは,ペンの変更をできるようにしたいと思います。現在はハンドブックの306ページの画像を記録という例題と同じ方法で,画像ハンドルに丸を記録してオフセット後にドローしています。これをリソースから読み込んだペンの画像が使えるように変更したいと思います。リソースから読んだ画像を描画する場合は,ToolBoxのCOPYBITSを利用するのが一番動作が早いのでしょうか。普通どのような手法を取るのか解っていないので,また調べなくてはなりません。

Painterはなかなか複雑な動きをします。1/60sec毎に確実にマウス座標を取得して,重いペンの描画と別タスクで動いているかのような動作です。実際にかなりマウスを振り回しても,Photoshopなら座標飛びが起こる場合でもしっかりと追従しています。確かに座標飛びは起こるのですがマウスの動きと描画が同期が取れていないので,マウス座標を記録しつつあき時間で描画しているようですね。このような機能を実装するのには,やはりタスクを発生させるのがいいかなと考えましたが,1/60sec毎に確実に動作するタスクを作る場合の注意点やこつはありませんか。やはり,カット&トライで試すしかないのかな。デバッカで動作時間の積算ができないのは不便ですね。

ToolBoxとコード種別の説明は,とてもよく解りました。しかし,利用したいToolBoxルーチンが68KなのかPPCなのかをみなさんはどのように判断しておられるのですか。関数名がなにかで判断できるのでしょうか。

古籏さん,これからも仲良くしてください。今日はありがとうございました。

Subject: [fb-ml 584] Re: はじめまして,教えて下さい。
 ベン/矢野 勉 です。

At 6:29 AM 97.5.27, 仙台7200/90 wrote:
ToolBoxとコード種別の説明は,とてもよく解りました。しかし,利用したいToolBoxルーチンが68KなのかPPCなのかをみなさんはどのように判断しておられるのですか。関数名がなにかで判断できるのでしょうか。
 ? PPC ネイティブ TOOLBOX と 68K TOOLBOX を区別なんかしてないんでわ? だって PPC マシンにはそもそも 68K TOOLBOX 自体が載ってない (まだ書き換えが終わってないところは別ですが...) わけで、呼び出したくても呼び出せませんよ。

 PPCネイティブのアプリの話をすれば、ある TOOLBOX が呼び出されると、すでに PPC対応済コードがあれば単純にそれが呼び出され、68K コードだったらエミュレータを介して実行される。この区別はシステムがやることですから、プログラマはただ単純に TOOLBOX を呼べばいいだけでわ。

 で、このプログラムを、(変更なしに)さらに TOOLBOX の PPCネイティブ化が進んだマシン上で使うと、あら不思議、実行速度があがるわけです。理由は今まで 68Kのままだった TOOLBOX が PPC に改められたため、いままでそこではエニュレーションして遅かったのが、完全ネイティブ TOOLBOX に切り替わるからです。(というか、呼び出してみたらそこに PPCコードがあった、て感じでしょうか?)

 要は、プログラマはただ呼びさえすれば、あとはシステムが勝手に区別します。呼び出したさきに PPC コードがあるか, 68K コードがあるか、の違いであって、ユーザーが意識的に 68K TOOLBOX を呼んだり、PPC TOOLBOX を呼んだりするわけではありません。

Subject: [fb-ml 585] Re: はじめまして,教えて下さい。
古籏一浩です。

At 21:29 97.5.26 +0000, 仙台7200/90 wrote:
だ画像を描画する場合は,ToolBoxのCOPYBITSを利用するのが一番動作が早いのでしょうか。普通どのような手法を取るのか解っていないので,また調べなくてはなりません。
 多くは

CALL DRAWPICTURE
 か
CALL COPYBITS

 のどちらかです。私はどちらかというと自前の場合が多いかな。
 自前でやるのが最も高速です。が素人レベルでは自前でやらない方が高速です。

>やはりタスクを発生させるのがいいかなと考えましたが,1/60sec毎に確実に動作するタスクを作る場合の注意点やこつはありませんか。やはり,カット&トライで試すしかないのかな。デバッカで動作時間の積算ができないのは不便ですね。
 こういう場合はタスクは作っていないんですよ。
 アイドリングタイムに描画し、さらに描画中にイベントが発生したら描画を中断しイベント取得を最優先するといった方法を使います。
 描画中といっても1ピクセル単位ではなくてラスター単位(1行)でイベントチェックをおこないます。
 描くデータは描画バッファにため込んでおけば複雑なものでも高速にイベント取得できます。

Subject: [fb-ml 586] カーソルの変更が・・
★以前に
 ■はい。一つのウィンドウに、テキストのフィールドとPICTのフィールドを作って、テキストの方はうまくいったのですが、PICTウィンドウの方がイマイチうまく行きません(^_^;)。
 ●カーソルがPICTフィールドに入ったら、カーソルを鉛筆に変えたい。(カーソルを変える方法は解りました)

 ●描画をPICTフィールドに限定するため、PICTフィールド以外では描画を無効にしたい。

 そこで、「カーソルがPICTフィールドに入った」という情報を何が得たいのですが、PGではなにかいいグローバル関数みたいなものはありませんか?やっぱ、座標で指定するしかないのかなぁ・・。 すいません、どなたかご指導下さいm(__)m。

 ■と書いたところ、[fb-ml 497]でベン/矢野 勉さんが

> これは簡単です(^^)
> PG はフィールドやボタンの上にきたときには自動的にカーソルを変更しますが、このとき、RUNTIME.GLBL 内で定義されている _pictCursor, _buttonCursor という定数を使っています。自分の RSRC ファイルに鉛筆カーソルのリソースを作ったら、そのID番号を (RUNTIME.GLBL を変更して) _pictCursor にセットしてやります。 >これであとはPGがよきにはからってくれるでしょう。
>
> ただし、PICTフィールドには必ず STATIC 属性を指定してください。FIELD ATTRIBUTE... で変更可能です。PICTフィールドは実はその正体は TEXTフィールドと同じものなんで、EDITABLE にしていると Iビーム・カーソルになってしまうようです。
> PGマニュアルの P158 の _oCursor アクションの解説もご覧ください。

 ■と教えてもらいました。ありがとうございました。
  さっそく、というか週末にいろいろいじってみました。

 そこで、Runtime.INCのpGcursorを見てみると、テキストフィールド内は全て_ibeamCursor(つづりは怪しい(^_^;))で、PICTフィールド内は全て_pictCursorなのですね。

 私がやろうとしているのは、カーソルの形状およびそのレスポンスをフローティングパレットの道具をクリックすることによって決めて、それを何かのグローバル変数に入れて置いて、PICTウィンドウに入ったらそのグローバル変数によってレスを変えようと思ったのです。
 まぁ、よくあるグラフィックソフトのような反応です。

  しかし、PGだとPICTフィールド内は全て_pictCursorの定数なので、こちらでそれ以上変えられません(T^T)。

 こういうことをやろうと思ったらどうすればいいのでしょうか?
 やっぱりPGに頼らず、自分で組むべきなのでしょうか?

  ただ、現在の設定のままだと、_pictCursorでPICTをつまんでスクロールできるので、どこか、たとえばPICT.FLTRのなかでスクロールとリンクしているのかもしれなくて、恐くていじれません。というか、もっとPG内のFNを理解して、それらを駆使すればいいのかも知れませんが、まだそこまでいっておりません(^_^;)。

 何かいいアドバイスがありましたらお願いしますm(__)m。
 いつも質問ばかりでスイマセン。

 PGはテキストをいじるのはなんか簡単そうですが、PICTをやるのは向いてないのかなぁ・・・などと、最近はちょっと気落ち気味です。

Subject: [fb-ml 588] Re: はじめまして,教えて下さい 。
ベン/矢野さん,はじめまして。

ToolBoxコードに関する説明をありがとうございます。私,プログラム開発は会社のWINDOWSでしかしたことがないので,ToolBoxのコード種別で混乱しておりました。Inside Mac Vol.1 に載っている関数も最新のマックではPPC化されているものが多いから気にせず使いなさいということですね。

私がToolBoxは68KとPPCがあり,同じ機能でも関数名が違うと思い込んだのはCやCPXで,ToolBoxにアクセスするときに68KとPPCで取扱が違うような説明があったように思ったからです。(根拠はありません,私の思い込みでしょう)えらい誤解をしていたようです。ありがとうございました。

では,失礼します。

Subject: [fb-ml 588] Re: はじめまして,教えて下さい。
古籏さん,こんにちは。

>画像を描画する場合は...
多くは CALL DRAWPICTURE か CALL COPYBITSのどちらかです。
私はどちらかというと自前の場合が多いかな。
自前でやるのが最も高速です。が素人レベルでは自前でやらない方が高速です。(改行位置変更)

  ありがとうございます。まだ DRAWPICTURE と COPYBITS の差が解っていませんが,勉強したいと思います。自前でやるのが最も高速ということですが,メモリの一括コピーのイメージでしょうか。自分でする場合は,色深度など考えなくてはいけないのですね。私も,自分でできるようになりたいです。当分の間は既存の関数を使おうと思います。

 アイドリングタイムに描画し、さらに描画中にイベントが発生したら描画を中断しイベント取得を最優先するといった方法を使います。
  イベントチェックの方法なのですが,手法はいろいろ有るのでしょうが,描画中のFN内部でチェックするのでしょうか。しかし,マウスの座標取得はMOUSE(_vert)などでしていますので,どういうイベントでロジックのどこに何を書けばいいのかわからなくなりました。メインのON MOUSE FN myFunc を1行単位で通過するようなループにしないとだめなのでしょうか。描画中にイベントを取得する方法がわからないのは未熟の限りです。

 描くデータは描画バッファにため込んでおけば複雑なものでも高速にイベント取得できます。
  これは,Offscrean に描画して,ウインドウに転送するのはあとにするということでしょうか。それとも,描画バッファとはハンドルに画像を記録することなのでしょうか。ちょっと実験してみたのですが,どうも後者のほうが早いようですね。

今日も頑張って勉強します。では。

Subject: [fb-ml 589] Re: はじめまして,教えて下さい。
古籏一浩です。

At 19:19 97.5.27 +0000, 仙台7200/90 wrote:
  高速ということですが,メモリの一括コピーのイメージでしょうか。自分でする場合は,色深度など考えなくてはいけないのですね。私も,自分でできるようになりたいです。当分の間は既存の関数を使おうと思います。
 自前の場合は、いろいろ考慮しないといけないので面倒です。
 その割に意外と見返りが少ないかもしれません。
 ゲームのシステムβ版作成時は直接VRAMアドレスに書き込んでいました(笑)

  メインのON MOUSE FN myFunc を1行単位で通過するようなループにしないとだめなのでしょうか。描画中にイベントを取得する方法がわからないのは未熟の限りです。
 イベント取得のツールボックスをコールします。
 ON MOUSE FN〜はHANDLEEVENTSの中で有効なので直にイベントを取得してきます。

  これは,Offscrean に描画して,ウインドウに転送するのはあとにするということでしょうか。それとも,描画バッファとはハンドルに画像を記録することなのでしょうか。ちょっと実験してみたのですが,どうも後者のほうが早いようですね。
 いえいえ、全然違います。
 つまり以下のようなキュー(リングバッファ)を用意します。

0:null
1:null
2:null
3:null

 で何か描画が発生したら

0:line (0,0)-(100,100)  <−QuePointer
1:null
2:null
3:null

 という具合にキューに押し込みます。さらに描画要求がきたら

0:line (0,0)-(100,100)  <−QuePointer
1:box(0,0)-(90,111)
2:null
3:null

 という具合に押し込みます。
 アイドリングになったらQuePointerにある描画命令を実行します。
 でQuePointerを1つずらします。

0:line (0,0)-(100,100)
1:box(0,0)-(90,111)  <−QuePointer
2:null
3:null

 ここで違う描画が発生したらキューに押し込みます。

0:line (0,0)-(100,100)
1:box(0,0)-(90,111)  <−QuePointer
2:circle (0,0),24
3:null

 アイドリングになったらQuePointerにあるboxを実行します。
 でキューが3を超えたら(限界を超えたら)0から記録します。
 キューでなくスタックにする方法もありますが、このような場合はキューの方が高速ですしタフです。

 といった具合ですが、わかりますか?

Subject: [fb-ml 590] Re: はじめまして,教えて下さい。
古籏さん,こんばんわ。

ゲームのシステムβ版作成時は直接VRAMアドレスに書き込んでいました
 すごいですね。どうやれば実現できるのかも想像できません。ここまでくると,神が宿るという世界なのでしょうか。

(キューの利用法省略)といった具合ですが、わかりますか?
キューを使えばいいということは理解しました。しかし,具体的な応用で迷っています。今日いろいろ実験してみたのですが,うまくいきません。次々と質問して申し訳ないのですが,次のポイントについてアドバイスをして頂けませんでしょうか。お願いいたします。

話しは変わりますが,PICTリソースの描画で悩んでいます。
スタートアップ・マニュアルのボールキャッチゲームでボールの形を変えようと考えました。Paint Softで小さな丸を作成し,ResEditでゲームのリソースファイルにPICT画像を追加しました。画像はグレースケールで背景が純白で丸は黒です。FN MoveBall 内の DEF CYCLE をコメントにして gBall.ballID = 128 を追加しました。実行すると確かに私の丸は表示されますが,背景が白のままで青になりません。オリジナルのボールは背景というか短形周辺部の白が青になりますよね。
Photoshopなどで調べても私の画像とオリジナルの画像の差がわかりません。
なにが違うのでしょうか。私のボールも周辺部が背景色になってくれるのを期待しているのですが,なかなか難しいものですね。

FBを買って5日が過ぎましたが,実にとっつき易いですね。とても気に入ってしまいました。友人にも勧めてみます。

Subject: [fb-ml 591] Re: はじめまして,教えて下さい。
古籏一浩です。

At 21:55 97.5.28 +0000, 仙台7200/90 wrote:
>ゲームのシステムβ版作成時は直接VRAMアドレスに書き込んでいましたすごいですね。どうやれば実現できるのかも想像できません。ここまでくると,神が宿るという世界なのでしょうか。
 やりかたが分かれば簡単です。
 でも、あんまり速くないですよ(^^;

 ・キューを用意するのは,グローバル変数で配列を用意すればいいですか。それとも,アクセス速度を優先するならNewPtr(Size)で別途自分で用意したほうがいいのでしょうか。自分で簡単に試してみたのですが,グローバル変数でも速度はあまり変わらないような気がします。他の方法で何か良いキューの作成方法があるのでしょうか。
 グローバルな配列で十分でしょう。
 その方が楽ですし(^^)
 DIM gDrawType(127),gX(127),gY(127)
 とかいった感じでいいでしょう。

 ・キューのサイズというか,行数を動的に変えたいのですが,FBでは配列のサイズを途中で拡張するような機能はないのでしょうか。マニュアルでは見つけることができませんでした。リスト構造にする事も考えたのですが,CPXと違いFBでのリスト構造の取扱が良く解らず宿題になってしまいました。
 このMLの初期の頃に似たような質問があったような気がしますが忘れました(^^;  動的配列はFBにはありません。
 MLの内容を、いい加減ページに掲載した方がよさそうですね〜
 人数も予想以上に多くなって来ましたし。

 ・描画ループの中で,タイミングよくイベントを取得するのが難しくて困っております。ループの回数は,座標飛びの距離で変化するのですが,ループ内で毎回イベントを確認に行くと,不要なイベント確認が多くてループ時間が伸びてしまいます。やはりここは1チック毎にキューにマウス座標をセットするタスクがほしいと思いました。ON TIMER FN で試してみたのですが,LOCAL内のDO Loop実行中は割り込んでくれないのですね。FB2でPeriodic Taskを発行するにはどうすればいいのですか。必死になって調べているのですが手がかりがつかめません。割り込みについてはマニュアルに載って無いのですね。
 Macは割り込みでマウスのクリック等をチェックしているはずですのでなんか組み方がおかしいのかもしれません。
 直にTOOLBOXを呼び出すというものですが、確か先取り出しできるコールがあったと思います。ここらへんはベンさんが解説してくれるかな?

話しは変わりますが,PICTリソースの描画で悩んでいます。
スタートアップ・マニュアルのボールキャッチゲームでボールの形を変えようと考えました。Paint Softで小さな丸を作成し,ResEditでゲームのリソースファイルにPICT画像を追加しました。画像はグレースケールで背景が純白で丸は黒です。
FN MoveBall 内の DEF CYCLE をコメントにして gBall.ballID = 128 を追加しました。実行すると確かに私の丸は表示されますが,背景が白のままで青になりません。オリジナルのボールは背景というか短形周辺部の白が青になりますよね。
Photoshopなどで調べても私の画像とオリジナルの画像の差がわかりません。
なにが違うのでしょうか。私のボールも周辺部が背景色になってくれるのを期待しているのですが,なかなか難しいものですね。

 これはスプライト(オブジェ)のように白抜きしたいという事ですか?
 私のページに合成表示の方法を書いたページがあったと思います。
 COPYBITSで_transparentを指定すれば背景色で抜けるのですが。
 マニュアルはリファレンス以外見ないので、ちょっと的外れかも。

Subject: [fb-ml 592] Dynamic Array (Re: はじめまして)
中野@kyoto-inet です。

古籏さん(openspc@po.cnet.or.jp)
》 ・キューのサイズというか,行数を動的に変えたいのですが,FBでは配列のサイズを途中で拡張するような機能はないのでしょうか。マニュアルでは見つけることができませんでした。リスト構造にする事も考えたのですが,CPXと違いFBでのリスト構造の取扱が良く解らず宿題になってしまいました。
》 このMLの初期の頃に似たような質問があったような気がしますが忘れました(^^;
》 動的配列はFBにはありません。

 NewPtr コールと XREF 関数を組み合わせれば,動的配列もどきが可能です。
DIM queue&
XREF queue%(127)

numOfQueue = 10
queue& = FN NEWPTR(numOfQueue * 2)

..........

numOfQueue = numOfQueue + 2
LONG IF numOfQueue =< 128
  queue& = FN SETPTRSIZE(numOfQueue * 2)
END IF
 XREF 関数であらかじめ大きめの配列を宣言しておきます。そして,NewPtr で配列の置場所を確保しておけば,SetPtrSize で配列のサイズを変更できます。

 詳しくは,Reference の XREF の項や Handbook の Handles and Pointers の項を見てください。

# でも,キューのサイズを変更させる意義が見いだせない。

Subject: [fb-ml 593] Re: Dynamic Array (Re: はじめまして)
中野さん,はじめまして。

NewPtr コールと XREF 関数を組み合わせれば,動的配列もどきが可能です。
 ありがとうございます。でも,ちょっと難しくてよくわかりませんでした。
 私にはXREF関連の勉強が必要です。勉強して利用できるようになりたいと思います。

でも,キューのサイズを変更させる意義が見いだせない。
 うぅぅ,突っ込まれたぁ。(^^;
 確かにサイズ変更の意義はあまりありません。
 私の場合は,ユーザーが長時間激しくマウスを動かし続けると描画が追い付かず,キューが溢れてしまいます。1分ならH,V各座標で3600個のキューが必要です。合計で7200個です。始めにこれだけの大きさの配列を取るのはもったいないと思ったから動的に確保できないものかと考えた次第です。
 しかし,根本的な仕様として数秒耐えられるキューで十分で,溢れた場合は描画を打ち切るなりすればいいのですから,キューは固定でいいのですね。
 でも,趣味でしていることなのでちょっと凝ってみたくなったのです。(^^;)

中野さんは京都の方なのですか。実は私も京都の北山に住んでいました。
地下鉄が北山まで通る以前のことですが...天一のラーメンが懐かしいです。(天天有も好きでした)
ローカルな話題ですいません。では,これからもよろしく。

Subject: [fb-ml 593] Re: はじめまして,教えて下さい。
古籏さん,こんにちは。

DIM gDrawType(127),gX(127),gY(127)とかいった感じでいいでしょう。
 ありがとうございます。これでいきたいとおもいます。

人数も予想以上に多くなって来ましたし。
 そうなんですか。MLの人数って今はどれくらいなのでしょう。
 ある程度の人数になっているのでしたら,一度親睦会などをしても楽しいかもしれませんね。東京でなら私も参加したいと思います。

>Macは割り込みでマウスのクリック等をチェックしているはずですのでなんか組み方がおかしいのかもしれません。直にTOOLBOXを呼び出すというものですが、確か先取り出しできるコールがあったと思います。ここらへんはベンさんが解説してくれるかな?
 組み方がおかしいと指摘されると,すごく不安になります。(^^;
 えーっと,私の考えていることを整理してみます。なにか問題があるからうまくいかないのだと思うので,問題点を鑑定して頂けないでしょうか。

 ・習作のお絵描きソフトにエアブラシの機能を付けようと考えています。
  Main Loop の ON MOUSE FN myDraw で描画を開始します。
  以下はLOCAL FN myDraw 内での手順です。
  マウスの座標は各イベントレコードからグローバル座標で取得できますが,イベントマスクをかけたり,ローカル座標への変換が煩わしいのでToolBox関数のGetMouse(point) で取得しています。   描画は古い座標と新しい座標の間に,直線で少しづつずらしながらPICTを上書きしていきます。このループを便宜上座標補完ループと呼びます。
  ここで,座標が大きく飛ぶと座標補完ループの回数が増えてしまい,1チック以内にループ完了できなくなります。するとGetMouseのタイミングが遅れて座標飛びがどんどん大きくなってゆきます。補完ループ内でGetMouseをすると,1チック以内に数十回の座標取得が発生します。これらは全て同じ値ですので,値が異なる確認のIF文を入れて新規座標のフィルタをかけます。これならば,1チック毎のマウス座標は確実に取得できキューに保存できますが,反面不要なGetMouseとIF文がループ速度を低下させます。
  補完ループ内部で1チック毎に1回だけGetMouseができれば効率がすごく改善されると考えました。しかし,ループ内では何を使ってもIF文が必要だし改善にならないのではと思いました。そこで,1チック毎に割り込んでくれるタスクでGetMouseしてキューに書き込めばいいのではと考えました。
  マウスをドラッグ中は座標補完ループとその外側のWHILE FN BUTTON のループ内にいます。FB2ではLOCAL FN内のループ実行中にMain のイベントCASEが効くのでしょうか。それならば,ドラッグ中に発生するイベントのLOCAL FN内でGetMouseすればいいのですね。でも,試しにやってみたのですがうまくいきませんでした。ああ,こんな長文になるのならソースのほうが良かったでしょうか。

白抜きの方法は,古籏さんのページを見て勉強したいと思います。
いつもお忙しい中,レスを頂いて恐縮です。

Subject: [fb-ml 595] Re: はじめまして,教えて下さい。
古籏一浩です。

At 13:42 97.5.30 +0000, 仙台7200/90 wrote:
  ここで,座標が大きく飛ぶと座標補完ループの回数が増えてしまい,1チック以内にループ完了できなくなります。するとGetMouseのタイミングが遅れて座標飛びがどんどん大きくなってゆきます。
 ここ、これですよ、おかしい部分は。

座標が大きく飛ぶと座標補完ループの回数が増えてしまい

 この補間部分が遅いわけですから、ここをアイドリング処理すればいいわけです。
 エアブラシの処理ですよね。普通にやっても時間かかりますのでキューだけでなく「どこまで描いたか」を変数に入れておけば昔のPhotoshop 2.0のように1ライン毎に描画する事で座標飛びがなくなるはずです。

 「わけわからない」

 というのであれば、サンプルを作ってもいいですよ〜
 ちょっと忙しいので遅くなるかもしれませんが・・・

Subject: [fb-ml 597] Re: やはり 255文字以上変数に
ベンさん、メーリングリストの皆さま、こんにちは。
あれから、いろいろと研究し実験した結果、

 j=0 'j=1とかいろいろ。。。
nthHandle& = [xCmdPtr& + _xParams + 4 * J]
newptr& = [nthHandle&]

でポインタを取り出せているようだということがわかりました。
しかし、そのポインタをどう使っていいかわからず。

ポインタを求めるtoolBoxルーチンを調べていたのですが、(例えば、FN CHARBYTEやFN CHARACTERBYTETYPE)いずれもコンパイルエラーでうまくいかず、結局、255文字づつハンドルからstr255$へ入れていく方法を考えました。

FN ZeroToPas (xCmdPtr&,[[xCmdPtr& + _params + j*4]], str255$(j))

を下記のように変更すると

FN ZeroToPas (xCmdPtr&,[[xCmdPtr& + _params + j*4]]+100, str255$(j))

で、XFCNに渡した引数のうち100バイト後からの文字列をとりだせるということがわかりました。

この方法で進めていけばなんとかなるかなと思っています。
とりあえず、事後報告です。

もし、こんな方法はおかしいし、良くないのであれば、ご忠告をお願いいたします。

Subject: [fb-ml 596] Re: はじめまして,教えて下さい。
古籏さん,こんばんわ。

今,いろいろ考えていたのですが,アイドリング処理をどのように実装するのかがわかりません。できるだけ自力で解決するように努力しようと心がけているのですが,悲しいかな見当がつきません。
アイドリング処理とは,描画ループ中で何かをチェックするということなのでしょうか。それとも,根本的に違う処理なのでしょうか。

サンプルを頂けると自分のソースの悪い点などがわかるのではと思いますので,甘えさせて頂いてもいいでしょうか。エンジン部分だけでもありがたいです。

Program Generator のチュートリアルを少ししてみたのですが,File Viewer を教本通りに作成するとコンパイル時に_fileMenuが宣言されていないとエラーになります。適当に修正して強引にメイクするとPICTファイルを読み込んだら,ウインドウが2つ表示されてしまいます。1つ目のウインドウ名はファイル名で,2つめのウインドウ名はPictuerWndとなります。MAINファイルのAction:Mainに教本通りFN openDocを追加してからおかしくなったように感じます。みなさんは,PGの教本は正常にメイクできましたか。CDに入っていた(PG) Tutorialsフォルダのサンプルをメイクしようとしても定数の重複宣言エラーになりません?
あぁ,私のFB環境が壊れているのでしょうか。しくしくしくしくしく。

MLが67人もいるなんてすごいですね。でも発言される方は10人ほどでしょうか。私と同じ初心者の方が多いのならちょっと安心(おいおい;)です。漫画の本は分厚くてもすぐに読み切れるのに,マニュアルって時間がかかりますね。では,また。

Subject: [fb-ml 598] Re: はじめまして,教えて下さい。
 ベン/矢野勉 です。

At 5:58 AM 97.5.31, 仙台7200/90 wrote:
Program Generator のチュートリアルを少ししてみたのですが,File Viewer を教本通りに作成するとコンパイル時に_fileMenuが宣言されていないとエラーになります。適当に修正して強引にメイクするとPICTファイルを読み込んだら,ウインドウが2つ表示されてしまいます。
1つ目のウインドウ名はファイル名で,2つめのウインドウ名はPictuerWndとなります。MAINファイルのAction:Mainに教本通りFN openDocを追加してからおかしくなったように感じます。みなさんは,PGの教本は正常にメイクできましたか。CDに入っていた(PG) Tutorialsフォルダのサンプルをメイクしようとしても定数の重複宣言エラーになりません?
あぁ,私のFB環境が壊れているのでしょうか。しくしくしくしくしく。

 ああ、これはもはや FAQ にしたほうがいいなあ。たぶん4度くらい聞かれている(^^;)

 これは日本語版にのみ起きる症状です。原因は単純で、古い PG は、メニュー定数を作成するのに、メニュー名そのものを使用するのです。英語版では File, Edit とメニューが並んでいたので、_FileMenu, _EditMenu などの定数が作成されていたんです。

 で、なんか日本語版では不注意にメニューが日本語に直されていまして、その結果、メニュー名から定数を作成しようとして、文字化けを起こすわけです。

 結論。PG でメニューをすべて英語にもどすか、同梱の英語版のサンプルを使用してください。または、一番いい方法は、PG をアップデートすることです。日本語版のアップデータは MODE がユーザー登録者には配布していますので、まだしていない場合は、すみやかに登録してください。英語版のアップデータは STAZ のページ &lt;http://www.stazsoftware.com/> にあります。現在の最新バージョンは、たしか FB 2.3, PG 4.3.2 のはずです。

 アップデートをすませると、PG はメニュー名からではなく、あらたに追加された、Menu Constants ダイアログで設定したとおりに定数を作成するようになります。これでほとんど問題は消えるはずです。

Subject: [fb-ml 598] Re: Dynamic Array (Re: はじめまして)
 ベン/矢野勉 です。

At 10:42 PM 97.5.30, 仙台7200/90 wrote:
>NewPtr コールと XREF 関数を組み合わせれば,動的配列もどきが可能です。
ありがとうございます。でも,ちょっと難しくてよくわかりませんでした。
私にはXREF関連の勉強が必要です。勉強して利用できるようになりたいと思います。

 ううむ、マックではポインタ(再配置不可能ブロック) よりもハンドル(再配置可能ブロック)を使ったほうが、メモリ効率はいいので、動的配列には XREF@ のほうがよいかと。

 ただし、NEWPTR(), NEWHANDLE(), SETHANDLESIZE() といった、動的配列に必要なTOOLBOX って、結構処理時間を食うような気がします。

Subject: [fb-ml 598] Re: はじめまして,教えて下さい。
 ベン/矢野 勉 です。

At 3:47 AM 97.5.30, KaZuhiro FuRuhata wrote:
> ・描画ループの中で,タイミングよくイベントを取得するのが難しくて困っております。ループの回数は,座標飛びの距離で変化するのですが,ループ内で毎回イベントを確認に行くと,不要なイベント確認が多くてループ時間が伸びてしまいます。やはりここは1チック毎にキューにマウス座標をセットするタスクがほしいと思いました。ON TIMER FN で試してみたのですが,LOCAL内のDO Loop実行中は割り込んでくれないのですね。FB2でPeriodic Taskを発行するにはどうすればいいのですか。必死になって調べているのですが手がかりがつかめません。割り込みについてはマニュアルに載って無いのですね。
 Macは割り込みでマウスのクリック等をチェックしているはずですのでなんか組み方がおかしいのかもしれません。
 直にTOOLBOXを呼び出すというものですが、確か先取り出しできるコールがあったと思います。ここらへんはベンさんが解説してくれるかな?

 これは ToolBox の GetMouse() ですね。カレントウインドウのローカル座標で、現在のマウス位置を返します。Handbook によると、FB では次のような呼びだしになります。
 DIM thePoint.4
  CALL GETMOUSE(thePoint)

 thePoint.v, thePoint.h でとりだせます。
 え、イベントループはループのたびにバックグラウンドに処理を割り振るので、普通のループよりは明らかに遅いです。マウスの処理のような短い処理の場合、普通のWHILE -- WEND ループで、処理時間を独占したほうがいいでしょう。いっさい他に処理時間をわたさないわけです。WHILE-WEND ループ内で、CALL GETMOUSE でマウス位置を確認しつつ描画していくわけです。

 必殺技として、MAC の OS がマウスカーソルを動かすのに使っているのと同じ、割り込み処理ルーチンもありますが...ここまでやるのはどうかと(^^;) よくしらないし(^^;)

Subject: [fb-ml 599] Re: はじめまして,教えて下さい。
ベンさん,丁寧なレスをありがとうございます。

ああ、これはもはや FAQ にしたほうがいいなあ。...
 そ,そうなんですか。MLって過去ログが見れないので途中参加の私などは,このような質問をしてしまうのですね。ユーザー登録は発送してからまだ数日ですのでアップデーターを待ちたいと思います。

WHILE-WEND ループ内で、CALL GETMOUSE でマウス位置を確認しつつ描画していくわけです。
 うーん,そのようにしてはいるのですが,WHILE Loopの完了前に1チック経過してしまう場合にGetMouseの発行が遅れるという問題が自力で解決できない状態なのです。WHILE内部でGetMouseしたらいいのですけど,不要なCallの回数が多くなり,Loop速度が低下するので他の方法は無いものかと考えている次第です。Loopの回数の上限を制限して,どこまで描画したかを記録してMainのDo Loopに戻すとNullイベンド時にGet Mouseできるので,これがアイドル処理というものなのかなと考えています。まだしばらく勉強が必要なようです。

必殺技として、MAC の OS がマウスカーソルを動かすのに使っているのと同じ、割り込み処理ルーチンもありますが...
 これは私のスキルをはるかに超えていますので(^^;......
 でも,こんなことができると楽しいでしょうね。

ただし、NEWPTR(), NEWHANDLE(), SETHANDLESIZE() といった、動的配列に必要なTOOLBOX って、結構処理時間を食うような気がします。
 これは,FB2で固定長のグローバル配列を利用したほうがレスポンスがいいということなのでしょうか。

ちょっとお聞きしたいのですけど,PG Function の FN buildGWorld(t)って色深度はどうなるのですか。160Kとか256とか指定したい場合にどうすればいいのか調べているのですが,まだ見つけられません。白黒のbuildBWorldも2値と8色の使い分けがどうなっているのだろうと考えてしまいます。直接ToolBoxを呼ぶのが正解なのでしょうか。

PGの生成するコードが少しづづわかってきました。理解の範囲が広がるとマックに向かうのが楽しくなりますね。これからも精進したいと思います。