【QBASIC互換!?】FreeBasic【GPL】 2 [無断転載禁止]©2ch.net

1デフォルトの名無しさん2016/12/24(土) 12:22:27.77ID:CVYSyiU+
FreeBasic
ttp://www.freebasic.net/

建てたいって人がいたので勝手に建てた
後はご自由にどうぞ
俺は知らん
過去スレ
http://echo.2ch.net/test/read.cgi/tech/1139379786/

168デフォルトの名無しさん2017/07/30(日) 20:22:55.03ID:u+yoeGtL
>>163 実行中のFont の切り替えについて。
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut2.htm#start
関連で、システムホントに限るけど、成功した。
GetStockObject()で、ANSI_FIXED_FONTやANSI_VAR_FONTを読みだして使うとじばけ。
その他、5種は日本語表示可能。

SendDlgItemMessage() となる。
http://www.dotup.org/uploda/www.dotup.org1324099.lzh.html
にテスト結果を記載。ライブは省略してある。使いたい人は適当に使って。

169デフォルトの名無しさん2017/07/31(月) 20:53:31.06ID:hUdORezO
アイコン処理。
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut1.htm#SECOND_STEP
で、LoadIcon()を使った処理が書かれているが、MSでは、LoadImage()を使うようにとの指示。
苦労の日々だったが、ひょんなことから解決された。

LoadImageゅょ
SendMessageゅょ
のあとに、SetDlgItemText( を入れ
DestroyIcon(ょ
DrawMenuBar(
となる。細かい内容は
http://www.dotup.org/uploda/www.dotup.org1325037.lzh.html
みてくれ。
使いたい人は適当につ買ってくれ。()内をいれるとはじかれてしまうので、()内はぬいてある。

170デフォルトの名無しさん2017/08/02(水) 21:17:17.15ID:wtPuYz7+
>>169 つづき。
書いた内容を Case WM_INITDIALOG 以降にコピーしても動作しなかったのが LoadImage() 系処理。

そんなわけで、ちょっと使い方に迷いが出ている。
見本のように、Case IDC_BTN18 以降のように書いていればアイコンの変更ができるのだが。

171デフォルトの名無しさん2017/08/03(木) 20:57:23.32ID:GxZl6DCx
>>168 で入力枠、EditText の日本語化が成功したことを知らせた。
日本語化が他の枠でも可能と思って、今まで後回しにしていた編集選択枠、ComboBoxの使用を開始すべく、
RCエディタで編集した、までは良かった。
編集選択枠がなぜか入力モードにならない。先は長い。

>>169
LoadImageゅょ
SendMessageゅょ
のかわりに
Sleep 1
とするとうまくいくかもしれない。
ライブ化して、Taka01U.Bas系にまとめたんだけど、任意のファイルからの入力指定がうまくいかない。
上述改変をしたら、使用可能になったから。
BIファイル作成ルーチンも書き換える必要があるので、起動時の処理は修正していないし、検討もしていない。
本体6ファイル 26KB、ライブ2ファイル、60KB。
本体は、BAS, RC, FBP, BIのテンプレファイルの他に、ライブが作成した2ファイルの構成。
2ファイルにしたのは、Case WM_INITDIALOG内に埋め込む処理と、サブルーチンコールとして使用する処理の2系統。
Declare 文やConst IniNameString as String、Const TakaSubRoutineNo As Long、TakaDammyReturnCode4 = TakaErrorPointSach(ょ行の処理は考えていない。
どのようにBIファイルの処理を構文解読ルーチンで理解させるかを考えたら、何もできなくなってしまった。

172デフォルトの名無しさん2017/08/04(金) 21:17:19.91ID:rK3gLdJI
Sleep 命令には注意が必要だ。
表示枠が消えて、ハングして常駐してしまう、という障害があった。
Sleep 命令が実行され、待ち状態に入ったが、
キー入力されたことにタスクが理解できず、いつまでも常駐している
という状態にあった。

WM_HELPINFO という機能があるらしい。
https://msdn.microsoft.com/ja-jp/library/2chd03xy%28v=vs.80%29.aspx
しかし、C:\tool\FreeBASIC\inc\win\winuser.bi には記載がいな。

>>171のアイコン切り替えで、WM_WM_NCUAHDRAWCAPTION = &h00AE、が発生するらしい。
これの意味が分からぬ。

173デフォルトの名無しさん2017/08/09(水) 22:20:18.40ID:LLNdI7OD
アイコン関係、初期化ルーチンで任意のファイルのアイコンに切り替える、という、VB時代の処理をあきらめた。
何かの事情が発生したときの処理に対応という方針で、いくつかのサブルーチンを作成した。

ここに、資源関係の処理を入れようとして、いくつかのサブルーチンを作成。
サブルーチンコールを管理している、つまり、Declear文が羅列されている、TakaCon1.BI作成ルーチンに登録するようにして、
大域変数は、全部共通にして、資源関係のサブルーチンの定数と、資源の定数を分離。
個別に処理する時には、#define 指定文字を指定するが、一括処理する場合は指定しないで、全部羅列した処理系を作成した。
一例だと、 IDC_BTN1の処理系に入ったら、 IDC_BTN?の新規割り込みを一括して抑制、
処理が終わったらば、もとの状態に戻すというルーチン。
大域変数を使えば簡単なんだが、Iniファイルに保存しておくようにした。
とここまでやるのに、結構時間がかかってしまった。

>>163 のDBCSがらみの処理がでてきてしまった。
カンマ形式のファイルの内、最も単純な形式、「,」で区切りの分割ルーチン。
二バイト目が,の場合におかしなことになってしまう。
かって一世を風靡した表計算ソフトのカンマ形式ファイルの書式、文字は"で囲む、という処理をしていた理由が分かったような気がする。
両脇を#で囲んだカンマ形式のファイルもあった。この理由もわかったような気がする。区切り記号が2バイト以上だったらば楽なんだけど、1バイトの「,」の処理には苦労した。
パーツの表題として、DBCSを記載して、RCファイルを読み取ると、この現象がわかるかと思う。
Byte単位の位置で返す Instr文、文字数で返すInstr文、DBCSとSBCSを区別しないシステム関数のInstr文の3つか゛必要な理由がわかってもらえると思う。

174デフォルトの名無しさん2017/08/18(金) 20:19:53.91ID:9L7+pOSL
前スレの続きになる。
'表示枠(Static)のxstyleを50000100, SS_NOTIFY 指定に変更したもの
'事象が発生し、以下の表示が行われる
に成功した。メッセージ枠の表示をオペレーター(末端ユーザー)が消去するルーチンとして
メッセージ枠のクリックをすること、のルーチンで作成してきた。
障害表示方法としてこの方法が使えるようになった。(消さないといつの障害ひょうじかわからなくなる)

http://www.dotup.org/uploda/www.dotup.org1342596.zip.html
使いたい人は適当に使って。

175デフォルトの名無しさん2017/08/22(火) 21:28:01.26ID:C4SDUJ2K
前スレにちょこっと書いた気がする。
今は昔、センターニュース、http://iss.ndl.go.jp/books/R100000002-I000000016279-00 をまとめて読む機会があった。
その中で、端末を使って遠隔操作する時の注意事項がかいてあった。
キーボードを眺めて、右端に、LED赤ランプがつくPRINTキーがある。
初めて使う時には、意味が分かってもわからなくても、このランプをつけて桶。
そうすれば、何かの役に立つときがある
こんな内容のコラムだった。Win系やPC-9801系を使っている人だと意味が分からない。
デカコンの端末としての機能を要求される機種を使っている人しかわからないだろう。

TV画面に表示される文字をそのままプリンターで印刷する機能で、
不慣れなオペレーターがおかしなことをしてしまった時に記録が印刷されているので、
管理者が復旧作業をするときの手助けになる記録を残している。

これは、結構便利な機能で、異常動作を非かく的簡単に割り出すことができる。
ゲームでは、全画面をゲーム画面として使ってしまうのが普通で、
とあるゲームメーカーでは、起動直後にRS-232Cを初期化して(初期化ルーチンは製品版にも残っている)、
ゲームの実行状態を出力し続けるルーチンとして存在した。

日曜プログラマーにとっては、障害復旧作業が容易であることが、優先する。
娯楽でやっているのだから、負担になるようなこと、原因が特定できにくい障害は排除しなければならない。

多少処理が遅くなったとしても、設計上発生しえない異常動作や入力値の異常値は記録しておく価値がある。
異常値は処理しないで即リターン、なんてやると、発見が困難な障害となりやすい。

176デフォルトの名無しさん2017/08/26(土) 10:09:58.49ID:YXn+YofD
オプションボタンの処理がなんとかできるようになった。
自動と手動があり、手動の方はさわりをやったぐらい。動作試験はいいかげん。
自動の方がなんとか動くようになったので、こんなところで打ち切り。
使いたい人がいたら適当に使って。Aを最初に作って、コピーしてGまで作成した。
Gで何とか動くので打ち切りとした。
この間に自動書き換えのライブルーチン Taka06E.bas を作成して、作成されたファイルが TakaRadio.BI
ライブファイル、Taka01B.Bas, Taka01S.Bas 等が含まれていないので、関係ルーチンはコメントなどに書き換えてくれ。

DBCS関係でちょっと苦労した。
DBCS非対応のルーチンにDBCSを含む処理をながすと、運が良ければ2バイト目をSBCS文字として処理してくれる。
発見方法としては、入出力文字のダンプしかないので気が付くのに遅れることがある。

177デフォルトの名無しさん2017/08/26(土) 10:22:17.46ID:YXn+YofD
>>176 これ忘れた。

http://www.dotup.org/uploda/www.dotup.org1349700.zip.html
使いたい人は使って。

178デフォルトの名無しさん2017/08/26(土) 19:42:07.42ID:YXn+YofD
DBCS処理で、特定の文字(全角空白等)に対する処理があり、CP932に限って処理していた。
他の日本語ページがあると面倒なので、一覧表を作成してみた。
'http://vanillasky-room.cocolog-nifty.com/blog/2007/06/windows-8ab4.html
'http://vanillasky-room.cocolog-nifty.com/blog/2007/06/post-156a.html

使いたい人がいたら適当に使ってみて。

http://www.dotup.org/uploda/www.dotup.org1350112.zip.html
MSの用語がよくわからぬので、最大値と最小値の範囲が適正な範囲になっているかどうかは不明。

179デフォルトの名無しさん2017/09/02(土) 17:01:26.17ID:+2eoALbI
*.RCファイルの解釈で、座標系についてわかったこと。
IDD_DIALOG DIALOGEX -4,-28,208,102  行、表示枠の大きさ。左上ユーザー領域を原点として、原点座標(0,0)と右下座標(208,102)、管理領域(-4,-28)を示す
CONTROL "IDC_STC",IDC_STC1,"Static",0x50000100,3,3,204,18 行の、各部品の表示座標(3,3,204,18)
に対して4+1 = 5, 28+1=29水平移動する。
Dim as tagRECT MainWaku, NowWaku, DialogWaku
TakaDammyReturnCode = IniFileRECTRead(CtrlFile7String, DialogSecName, DialogWaku)と IDD_DIALOG 行の読み取り値を構造体 DialogWaku に定義して
(前略) IniFileRECTRead(CtrlFile7String, SecName, MainWaku)と CONTROL "IDC_STC"行を MainWaku に定義する。
MSReturnCode = OffsetRect(@MainWaku, 1 - DialogWaku.Left, 1 - DialogWaku.Top) と、水平移動して、
(前略) MapDialogRect(TakaHWND, @MainWaku) と座標変換する。
以上の作業で。
hBtn = GetDlgItem(TakaHWND, IDC_STC1): '個別表示物のハンドル(枠番号)を取得, hBtn=0でエラー
MSReturnCode = GetWindowRect(hBtn, @MainWaku): 'スクリーン座標の取得
と得られる表示部品の座標と同じ値が得られるようになった。

180デフォルトの名無しさん2017/09/03(日) 19:38:14.65ID:sgzMDNBD
FreeBasic の想定外の仕様があった。
'Public Function IniFileWrite1 OverLoad(FileString as String, SecNameString as String, KeyNameString as String, KeyValBool As Boolean) As Xusa
Public Function IniFileWrite1 OverLoad(FileString as String, SecNameString as String, KeyNameString as String, KeyValLong As Long) As Xusa
とBool型と整数型の宣言があるときに
IniFileWrite1("D:\aaa.txt", "Tekito01", "tekito02", 0)
と即値で参照すると、 KeyValBool As Boolean で宣言したルーチンが選択される。

Str$(KeyValLong) 値が「False」と解釈される。整数だったらば、0&等で参照すればよいのだが、面倒なので
前者のルーチンは廃止した。Iniファイルへの出力ルーチンなので、STR$(なんたらBool)と文字化して、文字列として参照するように変更する、
VBの頃はIniFileWrite()はすべて文字だったので、もとに戻した内容となっている。
文字列と数値だけならば、Linkのほうで間違いをしても、極端な間違いとならないだろうという推定からの対応。
即値「0」がBool型定数と解釈されたことに驚いた。

変数型の間違いによる障害は極めて発見しにくいので、注意してくれ。

181デフォルトの名無しさん2017/09/05(火) 21:17:38.14ID:h569Mykb
スタイルシートを色々いじってみたが、コンボボックスが想定したような動作(V.B.6様表示動作)をしない。
しばらくはListBoxで乗り切る予定。
コンボボックスを立て幅が任意に変わってくれるListBoxとして使っていた変態のたわごと。

ライブはないけど、使いたい人は適当に使ってちょうだい。
https://www.dotup.org/uploda/www.dotup.org1358260.zip.html

Taka06系ライブは、使い方の分かるパーツがなくなったことで、ここまでで打ち切りかな。
作画ルーチンがわからないので、ヒ゜クチャボックス等が使えないし
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut3.htm#start 等
なんとかバーの使い方もよくわからないし、

MPFR系ライブ Taka05L.Bas
http://makoto-watanabe.main.jp/freebasic/tipsMPFR.html
で、変数の解放(終了処理)チェックルーチンが作りかけ。
メモリー関係の終了処理に関係した障害は、発見が極めて困難で、現象が一定しない障害になりやすい。
だから、効率(速度)を重視するか、効率を犠牲して不連続領域の発生しやすい使用直後の終了処理をするか、それとも使う変数を大域変数にして一括開始処理・一括終了処理にするか、で論議が分かれる。
ここの皆さんはどれを選ぶのであろうか。

182デフォルトの名無しさん2017/09/05(火) 22:30:41.26ID:h569Mykb
>>181 ツールバー関係がなぜ使い方がわからないかを説明しておいた方がよいかな。

QBの頃に開発したサブルーチン、SUB LineInputMakeCmdLine() がある。
画面上端3行のみ占有、その他の行はReturn時に復旧させる。
Iと入力したら、Input命令と解釈して、次の候補、Txt, CSV, CCC, T10, TSPの選択画面になって、、、、
とIコマンドに対する候補を表示して、選択するという機能。
これをツールバーに割り当てたい。
最初に命令の候補が表示されていて、一つを選択すると、選択肢が現れるという、動的割り当てを行う。
これがわからない。見た感じだと、静的割り当てしかできない。
V.B.では、命令選択をオプションボタンで決定して、候補を羅列、HideかEnableかの使い方があるが、候補を特定するようにした。
ツールバーで動的割り当てをする方法がわからないから、V.B.で使っていた方法で乗り切ろうかと思う。

183デフォルトの名無しさん2017/09/10(日) 02:07:35.37ID:6Eba6vnN
起動画面の拡大縮小に伴う、配置部品の拡大縮小表示がなんとか、動くようになった
V.B.の処理をそのまま移植するような調子で作った、DP系、2016.08から始めて1月で挫折した
手作業でいろいろやったのが2017.02-04、これはこれで完成したのだが、ちょっといじろうとすると、何がなんだかわけがわからない状態になってしまう
極端な場合、最初から作り直した方が早いという現象。パーツを2-3個減らして修正しようとして、挫折した6月
*.RCファイルに配置された状態から、そのままの位置配置で拡大縮小ができるようにと、始めた
なんとか、MPRFの*.BIファイルのように、BIファイル内に関係ルーチンを保存させて、これを参照するという方法に切り替えた
親ルーチンファイルごとに専用ルーチンを自動的に作成するという方向性で、Taka06C.Bas からTaka06I.Basを作成、癖をつかんだところで、Taka06B.Basを作成することとなった
なんとか、完成できた
>>181 のナントカバーについて。ツールバーはFreeBasic専用DLLファイルがある模様。いろいろな小細工は不可能に近い。
ステータスバーが、何とか見つかって、DimChk74系で作成
ステータスバーの位置を読み取ることで、画面再上端と画面最下端の4店の取得に成功
やっと、「クライアント座標系」という名称の物が、QBの論理座標系に相当すること
RCファイルの座標系は、ダイヤろくの座標をDialogWakuに保存して、各部品の座標をMainWakuに保存して
OffsetRect(@MainWaku, 1 - DialogWaku.Left, 1 - DialogWaku.Top)
MapDialogRect(TakaHWND, @MainWaku)
の演算を行うことで、「クライアント座標系」に換算できる
枠変形時に発生する事象では
WakuWidth = LOWORD(lParam) 'クライアントエリアの新しい横幅
WakuHeight = HIWORD(lParam) 'クライアントエリアの新しい高さ
WakuType = wParam
'GetClientRect(hWin, @rect) 'WakuWidth = rect.right: WakuHeight = rect.bottom とそれぞれ同じ値
と、変形後のクライアント座標を入手できることをつかんだ
何とか出来たのがコレ、使いたい人は適当に使ってくれ
https://www.dotup.org/uploda/www.dotup.org1361779.zip.html

184デフォルトの名無しさん2017/09/16(土) 09:04:18.02ID:0k/O/pWh
https://www.dotup.org/uploda/www.dotup.org1366764.zip.html
ライブはないけど、使いたい人は適当に使ってちょうだい。
V.B.の頃から使いだしたが、ListBoxで複数列の表示をする方法がある。
VBなので、対応値を各候補に割り当てる(関連付ける)方法は見つけられなかった。
キーになるもの、例えば通し番号と、いくつかの列をもつ行を表示して、
通し番号から、保存してある値を参照する、変更したら、全部一括してLISTBoxに候補を設定する
という使い方をしていた。何とかそれらしき、ルーチンの作成に成功した。

Taka06系ライブで、BIファイルを作成している。作成したBIファイルはつけた。

185デフォルトの名無しさん2017/09/23(土) 00:11:15.41ID:TIuQkNLj
>>169-172 >>173
Icon関係、こんなのをみつけた
http://www.nitoyon.com/vc/reference/gui/static.htm
表示している最中に DeleteObject してしまうと、Bitmap が表示されなくなってしまうので、親ウインドウを閉じる直前に DeleteObject しなければならない。
と、SendMessage()直後に開放するのではなく、タスク終了時に開放する必要があるとの記載と読み取れる。

186デフォルトの名無しさん2017/09/27(水) 19:31:08.07ID:dFhB3tDJ
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/index.html
「新規プロジェクト」内「テンプレート」に関する情報
Addin の場合
作成された *.Bas ファイルに
「#include "..\..\Inc\Addins.bi"」行がある。これは、
C:\FbEdit\Inc\Addins.bi
を示すらしい(ディスク内にこのファイル以外の同名のファイルが存在しない)。
D:\bas\Projects\ExeType1\ExeType1.bas
なんて別ドライブにて作業している場合には、
「C:\FbEdit\Inc\*.*」を「D:\bas\Inc\*.*」にコピーする必要がある。
作成された *.Bas ファイルに関して、「#include once "windows.bi"」行の後に
「#Include Once "win/commctrl.bi"」を書き加える必要がある。
これで、内容を修正していない状態でのコンパイルは通る。

Console の場合。
そのままでコンパイルは通るが、マルチモジュールにと複数のファイルを登録したら *.O がないとしてコンパイルできなかった。

Tabstrip の場合。
「declare function DlgProc(byval hWnd as HWND,byval uMsg as UINT,byval wParam as WPARAM,byval lParam as LPARAM) as integer」行が
コンパイルエラーで動かない。Declare文に合わせるか Function文に合わせるか、で後者を選択した。
つまり、前述Declear文をコメント行に変更して、
「declare Function DlgProc(byval hDlg as HWND,byval uMsg as UINT,byval wParam as WPARAM,byval lParam as LPARAM) as bool」文を追加した。

MS用語で、コールバック関数、以前使っていた用語では、ユーザー定義ルーチン、なので、
参照側、システム(スーパーバイザー)の定義がどうなっているのかをみないと、正確な内容はわからない。

現在チルドレン(GW?QB?用語)で参照ルーチンを作成できないか、あるいは、DLLファイル化するか、で迷っているところ。
多分、「ユーザー側(プログラム)で、連続した領域を要求したにもかかわらず、システムが確保できなくて、無理に実行して、ハングした」と思われる障害で苦しんでます。
https://mevius.2ch.net/test/read.cgi/tech/1475897582/856-897

187デフォルトの名無しさん2017/09/30(土) 06:57:11.47ID:0ZNFHa8Z
360互換機を使っていたころ、コマンド行の解釈は専用の内部タスクがあった。
表に出ることはないタスクなので、名称は覚えていない。システムを示す、コマンドの表題の末尾に「$」が記載されていたことを覚えている。

>>186 に書いた通り、領域の確保ができない場合に、分割する必要がある。
「自分で考えるよりも、誰かがやった歴史通りにまねをできるように」と学ぶのが、義務教育の社会科の中の一分野「歴史」。
分割するのに、360の歴史に従って、コマンドラインの解釈を分割することにした。
FBのコマンドラインに準じて、Fun SwitchFileRead2()系統を作成した(前スレ参照)が、これらは全部廃棄。
360に準じて作成し、今回QBに移植したFun SwitchFileRead()系統を復活させた。
前者はコマンドラインを順次解釈しているに対して、後者は前置詞・語・後置詞、修飾語の区切りが規定されているので、汎用化しやすい。
前者は、とうしてもスイッチの解釈が各ユーザー(プログラム)専用になってしまう。
後者は汎用性があるので、無意味なスイッチでも通過してしまうという欠点を持つが、主プログラムで使わないスイッチを読み飛ばしてしまうことで対応可能。

別タスクにして、チルドレン(GW(QBの前のバージョン)用語)で芋づる起動することを前提の Shell 命令
http://makoto-watanabe.main.jp/freebasic/PgShell.html
を使うことになる。タスク間の連絡を何にするか、迷ったところで、ハンチ等システムを復活させることにした。

188デフォルトの名無しさん2017/09/30(土) 07:13:23.29ID:0ZNFHa8Z
ハンチ等システム、内部構造は、TARファイルやISHファイルに類似したもので、
Unpack(語句の後ろに未使用の領域がある)データファイル、固定長文字列を単位としたランダムファイルとほぼみなせる。
それで、RANDOMファイルをつらつら眺めるに
http://makoto-watanabe.main.jp/freebasic/PgRandom.html#start
'C:\tool\FreeBASIC\examples\files\random.bas
'C:\tool\FreeBASIC\examples\files\records.bas
セクターの定義が Type命令を使うように替わった。TYPE命令で文字列を定義すると、文字列の区切りにヌル文字(&H00)が挿入される。
QBでは、セクター番号を示すらしい2バイトが挿入された。
ということで、末尾に &h0D, &h0Aを挿入して、テキストエディターで直接編集する、パンチカード等にふさわしい手法が使えない。
かといって、Binaryでやったらば、分量が増えて分割した意味がなくなってしまう、Taka01J..Bas は50KB程度しかないファイルだから。
バイナリエディタ、Stirling.exeで見やすくするために、16バイトの倍数に分割して、先頭と末尾に記号を置いて、、等の作業を始めた。

189デフォルトの名無しさん2017/09/30(土) 07:25:12.70ID:0ZNFHa8Z
>>186 の後に色々書いたらば、拒否されたので、用語だけ。
エディターボックスの内容が変わったことを示すルーチン
Case EN_CHANGE
'内容が変わる直前
Case EN_UPDATE
'内容が変わった直後
Select Case LoWord(wParam)
Case IDC_EDT1
GetDlgItemText(hWin, IDC_EDT1, @buff, SizeOf(buff))
Buff = "変更 :" + Buff
SetDlgItemText(hWin, IDC_STC2, @Buff)
End Select
Case EN_MAXTEXT
'挿入時にスペースを使い切った。
End Select
Case WM_SIZE
と、Case WM_SIZE の並びに挿入する。

190デフォルトの名無しさん2017/10/02(月) 19:33:39.22ID:pJ+UmT/H
>>186 の後に色々書いたらば、拒否されたので、用語だけ。
パーツの文字色と背景色の変更方法
Case WM_SIZE の並びに以下のように挿入する。
case WM_CTLCOLOREDIT
''エディット コントロールが描画されようとしています。
case WM_CTLCOLORLISTBOX
''リスト ボックスが描画されようとしています。
case WM_CTLCOLORBTN
'ボタンが描画されようとしています。
case WM_CTLCOLORDLG
'ダイアログ ボックスが描画されようとしています。
case WM_CTLCOLORSCROLLBAR
'スクロール バーが描画されようとしていることを示します。
case WM_CTLCOLORSTATIC
'スタティック コントロールが描画されようとしています。
Dim As HDC hdc = Cast(HDC, wParam)
Dim As HWND PatsHWND = Cast(HWND, lParam)
if( GetDlgItem(hWin, IDC_STC2) = PatsHWND) Then
SetTextColor(hdc, BGR( 128, 128, 255))
SetBkColor(hdc, BGR( 0, 0, 128))
Dim PatsHBRUSH As HBRUSH = Cast(HBRUSH, GetStockObject(NULL_BRUSH))
return Cast(BOOL, PatsHBRUSH)
End If
Case WM_SIZE
と、マーこんなところかな。

191デフォルトの名無しさん2017/10/02(月) 20:12:31.55ID:pJ+UmT/H
色関係
http://makoto-watanabe.main.jp/freebasic/PgRgb.html
Windows APIプログラマのための注意: Windowsでの衝突を避けるために、Windows参考のRGBというマクロ名は、FBヘッダーでは、BGRに改名されました。
の意味が分からなかったが、 C:\tool\FreeBASIC\inc\win\wingdi.bi の先頭に名称を変更したとの記載有。
どこか忘れたけど GetRValue()とGetBValue()を逆に使っている*.Basが入っているはず。
COLORREF型変数を16進ダンプすれば、内部構造が見当つくはず。
MSReturnCodeLR = SendDlgItemMessage(hWin, IDC_PGB1, PBM_SETPOS, 50, 0) 'メモリ50 を表示
SendDlgItemMessage(hWin, IDC_PGB1, PBM_SETBKCOLOR, 0, MScolor) '背景色設定
とプログレスバーを使って、色はチェックした。
プログレスバーは Select Case LoWord(wParam) 内 Case IDC_BTN1から色を直接制御できる。

DLLファイル関係。
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut5.htm#start
の「Dim Shared hRichEdDLL As HMODULE 」の後に使い方が書いてある。

192デフォルトの名無しさん2017/10/03(火) 19:11:06.84ID:GaATZUfo
>>186 
多分、「ユーザー側(プログラム)で、連続した領域を要求したにもかかわらず、システムが確保できなくて、無理に実行して、ハングした」と思われる障害で苦しんでます。
https://mevius.2ch.net/test/read.cgi/tech/1475897582/856-897
の関係。前スレで、https://www.slideshare.net/MoriharuOhzu/ss-14083300 なんて話題があったわけで、
複数機能を分割してツギハギの算譜を構築していったわけだが、巨大になりすぎた。
VB ( >>198 でVBとQBがごっちゃになっているところがある)で、同じようにメモリーが不足して、非常駐部(*.frm)に分けた内容を常駐部に戻したために、同じような案件が発生した。
元々Win(NT系)では、640KB(又は720KB)の制限が残っている。Win 10 32Bit系でも残っていた。
掲示板の内容を見れば、表に出ることを嫌う内容みたいだ。
サブルーチンやモジュールを参照する管理領域(オーバーレイローダー、ルートモジュール)を最小にして、
オーバーレイ領域を大きくとる、つまり、オーバーレイ領域同士の参照を禁止する(GWの文法)、複数のモジュールで共通するルーチンはそれぞれに分配する、という手法。
大学のサイトで、解説があった。
http://pepper.is.sci.toho-u.ac.jp/index.php?plugin=attach&refer=%BB%B3%C6%E2%A4%CE%BC%F8%B6%C8%A4%CE%A5%DA%A1%BC%A5%B8%2F16%BD%A9%2F%A5%AA%A5%DA%A5%EC%A1%BC
%A5%C6%A5%A3%A5%F3%A5%B0%A5%B7%A5%B9%A5%C6%A5%E0&openfile=8-3_%C2%E7%CD%C6%CE%CC%CC%E4%C2%EA%A4%C8%A5%AA%A1%BC%A5%D0%A1%BC%A5%EC%A5%A4.pdf
http://www-higashi.ist.osaka-u.ac.jp/~y-nakamr/lecture/systemsprograming2008/sp20081015.pdf
DLL化するには、閉塞されたモジュールにしないと面倒(CollBack関数の使用)なので、チルドレンの使用になると思う。
VBでは、10-60KB程度の内容を*.frmに分割することで、常駐*.Bas領域の容量不足に対応していた。
64bitはあと1-2世代たたないと恐ろしくて使えない。MSが8086以来崩せなかった部分だから。

193デフォルトの名無しさん2017/10/05(木) 21:21:49.11ID:NosQ3QuL
>>186
C:\FbEdit\Inc\Addins.bi 関係の情報。同一ディレクトリー内に有ったファイルについて、の調査結果。
わからないものが多い。また、英語ソフトの為ファイルの導入をしていないものもある。
複数台体制になったらば、1台は試験に使えるのだが、現状では1台体制の為動作試験は見送った。
もし、関係ファイルを導入したりして、使うことがあったらば関係情報を知らせてほしい。

''D:\bas\Inc\SpreadSheet.bi
'' sprsht.dll 不在に付不動の障害有。類似名に splsht.dll というファイルがあるらしい
''C:\tool\FbEdit\Projects\Samples\SprShtDemo\SprShtDemo.Bas
'' http://www.fltk.org/wiki.php?V341+TC+Q sprsht 1.2.2 sprsht.exe WIN executable
'' 表計算ソフト(sprsht.exe)

'' D:\bas\Inc\showvars.bi
'' FbEdit 出力画面に何かを表示させるためのルーチン

'' D:\bas\Inc\RAResEd.bi
'' C:\tool\FbEdit\Projects\Addins\ReallyRad\ReallyRad.bas に使用例有

'' D:\bas\Inc\RAProperty.bi
'' C:\tool\FbEdit\Projects\Addins\ReallyRad\ReallyRad.bas 使用例
'' C:\tool\FbEdit\Projects\Addins\FbDebug\FbDebug.bas 使用例

'' D:\bas\Inc\RAHexEd.bi
'' 使用例見つからず

'' D:\bas\Inc\RAGrid.bi
'' C:\tool\FbEdit\Projects\Samples\GridDemo\GridDemo.Bas 使用例
'' https://autohotkey.com/ の AutoHotkey に使われている RAGrid.dll を使った処理。
'' マウス・キーボードの自動入力。

194デフォルトの名無しさん2017/10/05(木) 21:23:23.27ID:NosQ3QuL
>>193 つづき
'' D:\bas\Inc\RAFile.bi
'' C:\tool\FbEdit\Projects\Addins\SnipletAddin\SnipletAddin.bas 使用例

'' D:\bas\Inc\RAEdit.bi
'' 使用例 C:\tool\FbEdit\Projects\Samples\RAEditTest\RAEditTest.bas

'' D:\bas\Inc\RACodeComplete.bi
'' 使用例発見できず
'' https://github.com/JohnTroony/Plugme-OllyDBGv1.0/tree/master/IDAFicator%20v2.0.11.45 に、RADASM の構成ファイルとして記載有。
'' http://masm32.com/board/index.php?topic=229.0 より RadASM.zip のDL可能 DLしたが *.DLL不在
'' https://forum.tuts4you.com/index.php?app=forums&module=forums&controller=topic&id=14483 著者サイト、サインアップという文字があるので追跡を中止

'' D:\bas\Inc\Addins.bi
'' FbEdit で Addin をテンプレートで選択したときに使用される。

以上、解読・ネット検索した結果

195デフォルトの名無しさん2017/10/09(月) 09:57:01.97ID:OFonel0E
配列の初期化
http://makoto-watanabe.main.jp/freebasic/PgDim.html
で、要素を書き並べるのだけれども
数があわない、位置があわない、等で散々。
こんなものを作ってみた。1次元、符号付単精度整数のみ対応。
>>186 に書いた通り、Taka06系ライブが容量不足で動作不能でハングしている。
したがって、DBCS非対応、チェックボックス・オプションスイッチ等非対応、等 Taka06系を使用しないで作成している。
以前書いたように、英語は天才的にできないので、Google機械翻訳に頼った。

https://dotup.org/uploda/dotup.org1358694.zip.html
使いたい人は適当に使ってちょうだい。

196デフォルトの名無しさん2017/10/09(月) 12:35:42.48ID:OFonel0E
配列の初期化
http://makoto-watanabe.main.jp/freebasic/PgRedim.html
で、
Redim は、固定サイズの配列では使えません - つまり、範囲固定の配列には Dim を使います。
と書かれている。「使えない」ということで、何かしらのエラーが発生する物と思っていた。

大域変数で
Dim Shared TakaCommFile(TakaTakaFigLSU To 0) As String
Dim Shared TakaCommFileFig(TakaTakaFigLSU To 0) As Long
と領域を確保して、別モジュール(ファイル)にある
PunchFileAutoData(TakaCommFileFig(), TakaCommFile())
と、値を定義するルーチンを呼び出し
ReDim iTakaCommFile(TakaTakaFigLSU To 0) As String
ReDim iTakaCommFileFig(TakaTakaFigLSU To 0) As Long
と、値を初期化して使用するつものが
値が定義されない。Redim文を除いたらば定義された。
動的配列と静的配列の違いを子ルーチン側で判断する必要がある。
あるいは、静的配列を廃止して動的配列のみに統一するとか、
いずれにしても、配列の引数関係を追跡する必要が出てくる。

197デフォルトの名無しさん2017/10/10(火) 19:42:36.81ID:VvL8ZiBO
>>190 のつづき。
case WM_CTLCOLORSTATIC
'スタティック コントロールが描画されようとしています。
If( GetDlgItem(hWin, IDC_RBN1) = PatsHWND) Then
'If( GetDlgItem(hWin, IDC_STC2) = PatsHWND) Then
の2系統
case WM_CTLCOLOREDIT
''エディット コントロールが描画されようとしています。
If( GetDlgItem(hWin, IDC_EDT1) = PatsHWND) Then
の1系統で背景色が変更可能。

著作権法で注意する点として、
誰が書いても同じ結果にしかならないこと
は、著作権が成立しない。
Tipsサイトがあるけど、それぞれのTipsに著作権はほぼ成立しない。例外として、変数名の命名法等
Tipsサイトでの著作権は、どの内容について書いたか、という、取捨選択した結果について成立する。

今までいろいろ書いてきたけど、Freebasicの算譜については、だれがやっても同じ結果にしかならない内容を特に選んだ。
パンチラシステムという名称は書いたけど、パンチラシステムそのものについては書いていない。
UnPackデータファイル、別の言い方をすれば、ランダムファイルの使用法しか書いていない。
ランダムファイルの使用法は、だれがやっても同じ結果になる。
したがって、著作権が成立しない。

現象の存在を知らせる内容、これは報道になるので、著作権法の規制にならない。

198デフォルトの名無しさん2017/10/13(金) 23:33:57.30ID:4WiG0cBL
>>187
なんとか、コマンドライン解釈部の分離に成功した。
実行形式で、450KB。
分離に成功したのは、Taka01J.Bas、ソースファイルで100KB。
100KBの内50KBは動作試験ルーチン、つまり、各種エラーチェックルーチン。
QB用パンチラシステムでは、各種エラーチェックをテキストエディタの各種機能に依存していた。
自前で作るのが面倒だから、エディターでチェックできるようにいろいろ小細工をやっていたわけだけど
FBでは、ヌル改行で、キャリッジリターン改行で゜はない。
結果として、エディタ任せのチェックルーチンを自前で作ることになってしまった。
こうなると、パンチラではなくなってしまう。360の頃に、1箱2000枚のパンチのチェックを手作業でやったことがある。
機械をつかわないで手作業で処理ができるということが、パンチラシステムの根底にあるのだが、
ヌル改行は手作業を著しく面倒にするバイナリエディターの使用に依存してしまう。

EMSの雑誌記事を思い出すわ。20KBの常駐部(コンペ゛ンショナルメモリー)を確保するために
500KBの実行ファイルが存在するというソフトの存在。

199デフォルトの名無しさん2017/10/14(土) 11:13:12.14ID:io4DSZT5
>>186-187 >>192 でチルドレンと書いた処理系がある。
FBの内容を読んでいたら、FBにチルドレンが搭載されていることに気が付いた。
http://makoto-watanabe.main.jp/freebasic/PgChain.html#start

よんだ範囲だと、QBやGWと内容が異なっている。
>外部プログラムが終了すると、実行は、Chain 呼び出し直後の部分から、再開します。
とあり、QBやGWでは継続処理ではなく、その場で終了してしまう。
それで、パンチ等に継続処理の命令を書いて、先頭から実行しするようにChain参照を続ける、パンチ等に継続命令があったらば継続するという処理を描いていた。
今は昔のQB, GW。

200デフォルトの名無しさん2017/10/16(月) 19:45:20.78ID:Rl7RwqK1
MS の
InDir2ZString = "SCR.exe"
InDir2PTR = @InDir2ZString
'MSReturnCode = PathFindOnPath(@InDir1ZString, @InDir2PTR)
で、SCR.exeのフルパスを取得できないでいる。
結局、GWの環境変数取得・分離分割・実行ファイルの絶対ファイル名取得、ルーチンが復活。
>>198の Taka01J.Basのパンチラファイルの構造を変更して、参照する外部ルーチンのフルパスを保存するようする予定。
今週いっぱいこれにかかりきりだ。
ところで、MSのスプーラはどのあたりを見れば書いてあるのかな。
見つからなければ、自前で作るしかないので、最も簡単な処理方法を選択することとなる。
実行形式のファイルを自己ディレクトリーに共通領域からコピーして、自己タスクとして起動する方法が最も簡単。
レジストリーを使わないで、自己の存在する場所のファイルのみを使っていれば、同じ名称のべ゜つタスクになるので、資源の奪い合いが発生しない。
もっとも単純かつ最も簡単で、一番始末に困るスプーラー(?)となる。

201デフォルトの名無しさん2017/10/27(金) 20:48:40.11ID:h0yxU7mD
Declare Function FileSelectString(
と宣言して
Private Function FileSelectString OverLoad(
Private Function FileSelectString OverLoad(
とルーチンを作成したら、なぜかFileSelectString()の大域参照ができるようになっていた。
局所参照ルーチンが大域参照可能となると、発見しずらい障害になるので、要注意。

202デフォルトの名無しさん2017/11/08(水) 22:38:42.08ID:yc7uDHtl
子プロセス(GW用語)から子プロセスを呼び出して、
30KB節約しようとした。
一つ目は比較的簡単にできた。
2つ目は、怪しげな変数を返す。
したがって、現在混乱中。
パンチラシステムで、複数のルーチンをチルドレン(GW用語)すると、日常的に発生する怪現象の一つ。

情報処理用語では、時差問題、と呼ぶこの現象で、今月いっぱいかかってしまうかな。
FBはコンパイラーなので、処理情報を標準エラー出力に出し続けて、追跡して、障害を特定する必要があるから。
インタープリンターだと、適当なところにSTOP文を入れて、print文で表示させながら、追跡していくのだが、
コンパイラーだと、状態を標準エラー出力に書き出させて、見当つけるしかない。
デバッカー?、そんな高級なソフトは使えません。MSのデバッカーがなぜか動作して、訳の分からない状態になっていますので。

203デフォルトの名無しさん2018/01/02(火) 14:02:32.56ID:5TyhEdY1
あけましておめでとうございます。
相変わらず、時差問題に苦しんでいます。

204渡辺真2018/02/12(月) 23:10:18.67ID:J2JlECET
一年ぶりに、FreeBASIC 日本語版マニュアルを更新しました。
2018年1月18日までの英文版 Wiki の変更を反映したつもりです。
http://makoto-watanabe.main.jp/freebasic/

CHM 版は、下記でダウンロードできます。
http://makoto-watanabe.main.jp/freebasic/FB-manualJP20180212.zip

修正すべき点、加筆すべき点など、ご指摘、ご意見を、お願いいたします。
FreeBASIC で遊んでみて下さい。

205デフォルトの名無しさん2018/02/16(金) 02:34:42.11ID:RDbDi6VM
漏れは正しいライセンスを遵守する

Documentation
The documentation is released under the GFDL license.

206デフォルトの名無しさん2018/02/16(金) 13:48:53.52ID:ecrQZx2F
勝手にやってろ
そもそも向こうに行けよ

207デフォルトの名無しさん2018/02/19(月) 17:56:30.67ID:pz2UhWki
orz

208デフォルトの名無しさん2018/02/28(水) 15:07:54.17ID:lSHAMaGx
戻ってきたら相変わらず。

>>55
手遅れだが、割と平和でまともな人の多い OSDN へ移行した方がいいと思うよ。にちゃんはダメだね。
が、ここ数年で高性能な BASIC 系言語が出ているから苦戦すると思う(幸い国内ではあまり知られていない)。

チラシ裏
Vzエディタにしろ QBASIC にしろ古いものを復刻しようとすると、必ずユーザー側で変なヤツが現れて、まとわりついてコミュニティを破壊するからなあ。古いものは思い出にしたまま、使い続けるなら専門修理業者任せのほうがみんなにとって幸せなのだろうな。

209デフォルトの名無しさん2018/02/28(水) 19:20:55.37ID:3pm9mJ+R
ここはバカ専用スレなので、下記スレに移動してな
ttp://mevius.5ch.net/test/read.cgi/tech/1486254007/

210デフォルトの名無しさん2018/03/01(木) 02:11:38.86ID:xKpbk5NS
>>208
ドキュメントを原文の専門修理業者任せにしたままだったほうが良かったのでは?って思ったよ。

211デフォルトの名無しさん2018/03/02(金) 22:38:10.83ID:nrwBdfCB
ぐちぐちうるせぇ
折角別に有るんだからそっちへいって二度と来るな
スレ違いです

212デフォルトの名無しさん2018/03/11(日) 10:31:01.66ID:zUkaU6dD
AppGameKit Mobile Released on Android!
https://www.thegamecreators.com/post/appgamekit-mobile-released
https://play.google.com/store/apps/details?id=com.tgc.agk.mobile

金曜日、2018年3月2日にTGC NewsのAppGameKit News、

今日、Androidプラットフォーム上のAppGameKit Mobileがリリースされました。
今では、AppGameKit Mobileでどこでもどこでもアプリ、デモ、ゲームを作成して、「外出先で」コーディングすることができます。

この完全に無料のAppGameKitのバージョンでは、通常のAppGameKitスクリプト言語を使用してコードを作成してから、プロ
ジェクトをコンパイルしてデバイス上で直接実行することができます。このアプリにはデモとサンプルが付属しているため、新
規ユーザーはプログラミング言語の使いやすさを知ることができます。

カットダウンしたIDE内でアプリケーションをコーディングしてから、超高速コンパイラを使用して、プロジェクトをほぼ即座に実
行することができます。クラウドを追加して保存すると、あなたのプロジェクトをTheGameCreatorsのウェブサイトにアップロー
ドして、プロジェクトを安全に保護したり、Windows、Mac、Linux版のAppGameKitでコーディングを続けることができます。

AppGameKit Mobileは、デスクトップ版の多くのコマンドへのアクセスを提供します。最も重要なのは、ゲーム作成のためのす
べての主要なコマンドです。

・3Dグラフィックスと3D物理
・2Dグラフィックスと2D物理
・レンダリングコントロール
・サウンド&ミュージック
・ユーザー入力
・ファイルI / O
・センサー

カメラと写真のアクセスでは、あなたのデバイスから画像メディアをインポートしてから、これらの画像をアプリケーションのス
プライトまたはテクスチャとして使用できます。

今すぐ無料でダウンロード!

213デフォルトの名無しさん2018/04/07(土) 01:15:02.53ID:SAZaE57U
ほえーすごいなこのスレ
freebasicって学習曲線が0に向かっていくのかしら

214デフォルトの名無しさん2018/04/07(土) 21:51:47.96ID:cSksy2F8
freeBASICネタじゃないけどBASIC総合とかないので
ネット上で試せる行制御型BASICが有った
http://www.quitebasic.com/
cとかは良く有るけどBASICは珍しい気がする

215渡辺真2018/05/15(火) 18:03:14.13ID:j460gO/q
久々に「GUI ライブラリ Window9」の日本語マニュアルを更新しました。
http://makoto-watanabe.main.jp/freebasic/Window9.html
CHM Helpファイル(日本語 helpWindow9JP20180515.zip)もダウンロードできます。

Window9 を使ったコードと表示画面の例(これは、ほんの一部です)
http://makoto-watanabe.main.jp/freebasic/Window9/W9S.html

注意:オリジナルの Window9 は、FreeBASIC 32 ビット版にしか対応していません。
しかし、D.J.Peters さんの分岐バージョンは、32 と 64-bit FreeBASIC に両対応しています。
https://www.freebasic.net/forum/viewtopic.php?f=14&t=17058&p=245609#p245609
http://shiny3d.de/public/libs/libWindow9.zip

216デフォルトの名無しさん2018/05/20(日) 18:59:21.38ID:zE3tRiv6
3月にパソがストライキに入って
先日タイ米ん万円を投じて機械を切り替えた。
で、ストライキ中のパソの中身を抜き取ろうとして中身を見たら
ハードエラーだった。
2016年以来、BIファイル内に書き込んだ、おおっぴらにできないメッセージ(つまり、MSの悪口とその対応方法)の数々を失った。

217デフォルトの名無しさん2018/05/23(水) 19:09:14.59ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

QAGW2

218渡辺真2018/05/23(水) 23:01:11.10ID:DanoYNXa
連想配列(Dictionary Class)のページを追加しました。

http://makoto-watanabe.main.jp/freebasic/tipsDictionaryClass.html

このページの内容は、MITライセンスで公開します。

新着レスの表示
レスを投稿する