HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
1118
さかHSPラベル・関数一覧18解決


さか

リンク

2019/11/18(Mon) 20:00:23|NO.88874

HSPエディタにある「ラベル関数一覧」が常時表示されてる方が使いやすいので
作成しました。
EXEにしてオプションの外部ツールでエディタ起動時に実行する設定にしてくだ
さい。
良ければ使って改良してください。


#include "hsedsdk.as" #include "user32.as" #define tl "HSPラベル・関数一覧" #packopt name tl #packopt hide 1 screen 0, ginfo_dispx, ginfo_dispy, 2 title tl ; ウィンドウのスタイルを変更 GetWindowLong hwnd, -16 SetWindowLong hwnd, -16, stat - $20000 ; HSPエディタ hwnd取得 repeat 10 hsed_getwnd edit_hwnd, HGW_MAIN: if stat == 0: break wait 20 loop if stat != 0: dialog "HSPエディタを起動してください", 1, "HSPエディタラベル関数一覧":end ;gosub *リサイズ ;--- ラベル関数リストボックス配置 ------------------------------------- font "MS ゴシック", 18: objmode 2 ListY = 100 pos 0, 0 sdim labelList objsize ginfo_winx: listbox lstbx, ginfo_winy, labelList: lstNo = stat: hLst = objinfo( stat, 2 ) oncmd gosub *click, $111 *@ gosub *リサイズ gosub *テキスト取得 wait 20 goto *@b stop ;---クリック --- *click oncmd 0 if lparam == hLst { sendmsg hLst, $188: cmCnt = stat // クリック行取得 if cmCnt != s_cnt and cmCnt >= 0{ split LabelList, "\n", istr split istr( cmCnt ), "|", ss // エディット行選択 sendmsg hIF@hsedsdk, _HSED_SETCARETLINE@hsedsdk, footyId, int( ss( 1 ) )-1 SetForegroundWindow edit_hwnd s_cnt = cmCnt } } oncmd 1 return *リサイズ ; HSPエディタサイズ取得 dim gt, 4 GetWindowRect edit_hwnd, varptr( gt ) ; x = gt.0: y = gt.1 GetClientRect edit_hwnd, varptr( gt ) sx = gt.2: sy = gt.3 width 200, sy-80, x-200, y+80 ; リスト MoveWindow hLst, 0, 0, ginfo_winx, ginfo_winy, 1 gsel 0, 1 return *テキスト取得 hsed_getwnd edit_hwnd, HGW_MAIN: if stat != 0: end ; アクティブなタブのIDの取得 hsed_getacttabid tabid: if stat == 1: dialog "アクティブなタブのIDの取得エラー": return ; タブのIDからFootyのIDを取得 hsed_getfootyid footyId, tabid ; テキストの文字列長を取得 hsed_gettextlength len, footyId sdim txt, len + 1 ; 編集中のテキストを取得 hsed_gettext txt, footyId if txt == s_txt: return s_txt = txt notesel txt dim lbxGyo, notemax: i=0 // ラベル行 cmFlg = 0 // コメントフラグ sdim labelList repeat notemax wait 0: gyo=cnt sdim tt: noteget tt, gyo tt2 = strtrim( tt, 0, ' ' ): tt2 = strtrim( tt2, 0, ' ' ) if strlen( tt2 ) == 0: continue s="#defcfunc ", "#deffunc ", "#modcfunc ", "#modfunc " repeat length( s ) if instr( tt2, 0, s( cnt ) ) == 0{ // ラベル内容追加セット labelList += strf( "%s |%d\n", tt, gyo+1 ) lbxGyo(i) = gyo: i++ } loop if strmid( tt2, 0, 1 ) == "*" and strmid( tt2, 1, 1 ) != "/"{ labelList += strf( "%s |%d\n", tt, gyo+1 ) lbxGyo( i ) = gyo: i++ } loop objprm lstNo, labelList return



この記事に返信する


ソラ

リンク

2019/11/18(Mon) 21:42:27|NO.88875

めっちゃ便利ですね!
今まで外部ツール使ったことなかったんですけど登録しました。



窓月らら

リンク

2019/11/19(Tue) 01:09:42|NO.88878

便利! 改造して使わせて頂きます。



f(出張前)

リンク

2019/11/20(Wed) 08:40:39|NO.88880

便利に使わせて頂きます。



ソラ

リンク

2019/11/20(Wed) 10:04:02|NO.88881

1つ質問があります。
そのうちこのソースコードを改造したり流用したツールを、
さかさんの名前を明記した上で自分のサイトとかで配布したいのですが、大丈夫でしょうか?
(もちろん配布する場合は広告などは一切つけず、完全無料で配布するつもりです)



窓月らら

リンク

2019/11/20(Wed) 15:41:06|NO.88883

うちもソラさんと同じこと思ってました。
自分用に改良したのを使わせて頂いてます♪

↓現時点でこんなんなってます。

#include "hsedsdk.as" #include "user32.as" #define tl "ラベル・関数一覧" #packopt name tl #packopt hide 1 ;------------------------------------------------------------------------------- // 二重起動防止 #uselib "kernel32.dll" #func CreateMutex "CreateMutexA" sptr,sptr,sptr #func GetLastError "GetLastError" CreateMutex 0,0,"_label_list_" // 適当なユニーク文字をセット GetLastError: if stat=$b7 { end } // 既に起動していたら終了 ;------------------------------------------------------------------------------- screen 0, 160, 354, 10 title tl ; ウィンドウのスタイルを変更 GetWindowLong hwnd, -16 SetWindowLong hwnd, -16, stat - $20000 ; HSPエディタ hwnd取得 repeat 10 hsed_getwnd edit_hwnd, HGW_MAIN: if stat == 0: break wait 10 loop if stat != 0: dialog "HSPエディタを起動してください。", 1, tl: end gosub *リサイズ ;--- ラベル関数リストボックス配置 ------------------------------------- font "MS ゴシック", 14: objmode 2 ;ListY = 100 pos 0, 0 sdim labelList objsize ginfo_winx: listbox lstbx, ginfo_winy, labelList: lstNo = stat: hLst = objinfo( stat, 2 ) oncmd gosub *click, $111 *@ ;gosub *リサイズ gosub *テキスト取得 wait 50 goto *@b ;stop ;---クリック --- *click oncmd 0 if lparam == hLst { sendmsg hLst, $188: cmCnt = stat // クリック行取得 if cmCnt != s_cnt and cmCnt >= 0{ split LabelList, "\n", istr split istr( cmCnt ), "|", ss // エディット行選択 sendmsg hIF@hsedsdk, _HSED_SETCARETLINE@hsedsdk, footyId, int( ss( 1 ) )-1 SetForegroundWindow edit_hwnd s_cnt = cmCnt } } oncmd 1 return *リサイズ ; HSPエディタサイズ取得 dim gt, 4 GetWindowRect edit_hwnd, varptr( gt ) ; x = gt.0: y = gt.1 GetClientRect edit_hwnd, varptr( gt ) sx = gt.2: sy = gt.3 width 160, 354, x+sx-187, y+104 ; リスト ;MoveWindow hLst, 0, 0, ginfo_winx, ginfo_winy, 1 gsel 0, 2 return *テキスト取得 hsed_getwnd edit_hwnd, HGW_MAIN: if stat != 0: end ; アクティブなタブのIDの取得 hsed_getacttabid tabid: if stat == 1: dialog "アクティブなタブのIDの取得エラー": return ; タブのIDからFootyのIDを取得 hsed_getfootyid footyId, tabid ; テキストの文字列長を取得 hsed_gettextlength len, footyId sdim txt, len + 1 ; 編集中のテキストを取得 hsed_gettext txt, footyId if txt == s_txt: return s_txt = txt notesel txt dim lbxGyo, notemax: i=0 // ラベル行 cmFlg = 0 // コメントフラグ sdim labelList repeat notemax wait 0: gyo=cnt sdim tt: noteget tt, gyo tt2 = strtrim( tt, 0, ' ' ): tt2 = strtrim( tt2, 0, ' ' ) if strlen( tt2 ) == 0: continue s="#defcfunc ", "#deffunc ", "#modcfunc ", "#modfunc " repeat length( s ) if instr( tt2, 0, s( cnt ) ) == 0{ // ラベル内容追加セット labelList += strf( "%s |%d\n", tt, gyo+1 ) lbxGyo(i) = gyo: i++ } loop if strmid( tt2, 0, 1 ) == "*" and strmid( tt2, 1, 1 ) != "/"{ labelList += strf( "%s |%d\n", tt, gyo+1 ) lbxGyo( i ) = gyo: i++ } loop objprm lstNo, labelList return



窓月らら

リンク

2019/11/20(Wed) 16:01:31|NO.88884

HSPエディタもF11を押すことで同等の機能はありますが、こちらはポップアップ型。
常時表示してあった方が効率良さそう。



さか

リンク

2019/11/20(Wed) 18:57:11|NO.88887

ソラさん、窓月らら、f(出張前)さん、感想書き込みありがとうございます。

そんなたいしたものでもなく作成主張するつもりならソース公開しないので
有償、無償、配布、全く気にせず自由に使ってください。

窓月ららさんのように改良し公開してもらえたら使わせてもらいます。



ソラ

リンク

2019/11/21(Thu) 01:32:48|NO.88889

>>有償、無償、配布、全く気にせず自由に使ってください。
ありがとうございます、いつ完成するかはわかりませんが完成したら掲示板にも公開しようと思います。



さか

リンク

2019/11/21(Thu) 21:51:53|NO.88896

メインループに以下を入れると一緒に前面になって便利かもです。
SetParentで子ウィンドウにするとカッコ良いいんですが何かでフリーズしたり
すると親のエディタも巻き込んで操作不能になるため止めました。


*@ gosub *リサイズ gosub *テキスト取得 GetForegroundWindow //アクティブウインドウのハンドル取得 if stat == edit_hwnd{ ;確実に前面にする SetWindowPos hwnd, -1,0,0,0,0,1|2 SetWindowPos hwnd, -2,0,0,0,0,1|2 } wait 20 goto *@b stop



ソラ

リンク

2019/11/21(Thu) 23:00:23|NO.88899

https://gyazo.com/ec32db10e5aee91d0fd5d58de2cc0b2d
まさに子ウィンドウにしてやってましたw
何かしら不具合時の対策必要ですよねー・・・



さか

リンク

2019/11/22(Fri) 22:10:38|NO.88904

はいw
ただ、このくらいの単純な処理なら大丈夫かと思います。
自分はこの他に命令一覧やトレース実行や常駐動作をAPIのタイマー使用したり
して頻繁に固まりました(^^;

oncmdとかon〜系はgosubが良いとか呼ばれる先はreturn 0にするべきとか曖昧な
のと実際の挙動に不信感があります。

あとhsedsdkもバグがあったり機能しなかったりなので、HSPエディタ毎作ろうかと
リッチエディットを使用したエディタエンジンを気長に作ってたりしてます(笑)



ZAP

リンク

2019/11/22(Fri) 22:54:53|NO.88905

これは便利ですね!
作業効率が上がりそう



Ponyo

リンク

2019/11/23(Sat) 10:24:20|NO.88907

面白そうですね(^^♪
>そんなたいしたものでもなく作成主張するつもりならソース公開しないので
>有償、無償、配布、全く気にせず自由に使ってください。
>
>改良し公開してもらえたら使わせてもらいます。
とのことなので開発することにしました。
順調に進んではいるんですけど、NO.88899 のソラさんと若干。...というかかなり似てしまったことに今頃気づいてしまいました。
https://gyazo.com/dd6b13538efa806600ca37334993a6f1
すいません(^^;)



ソラ

リンク

2019/11/23(Sat) 14:31:46|NO.88910

いえいえ、お気になさらず。
おそらく細かい部分は差別化できると思うので、お互いがんばりましょう!



窓月らら

リンク

2019/11/24(Sun) 03:11:47|NO.88915

現時点の公開します。
HSPエディタの右上に貼り付くようになってます。
HSPエディタを最小化すると一緒に消えます。
手動で位置を移動すると貼り付かないようになります。
また貼り付けたいときは、マウス右ボタンを押しながら左ボタンを押します。
これでとりあえず使えますが、最適化などをしていきます。。

;------------------------------------------------------------------------------- ; hsplabel Version 0 ; オリジナルソース:さかさん 改良版:窓月らら ;------------------------------------------------------------------------------- #include "hsedsdk.as" #include "user32.as" #packopt name "hsplabel" #packopt xsize 1 #packopt ysize 1 #packopt hide 1 ;------------------------------------------------------------------------------- // 二重起動防止 #uselib "kernel32.dll" #func CreateMutex "CreateMutexA" sptr,sptr,sptr #func GetLastError "GetLastError" CreateMutex 0,0,"_hsplabel_" // 適当なユニーク文字をセット GetLastError: if stat=$b7 { end } // 既に起動していたら終了 ;------------------------------------------------------------------------------- #define APP_TITLE "ラベル・関数一覧" ;------------------------------------------------------------------------------- title APP_TITLE screen 0,160,354,10 // ウィンドウのスタイルを変更 GetWindowLong hwnd, -16 SetWindowLong hwnd, -16, stat - $20000 // HSPエディタが起動しているか repeat 10 hsed_getwnd edit_hwnd,HGW_MAIN: if stat=0 { break } wait 10 loop if stat!0 { dialog "HSPスクリプトエディタを起動してください。",1,APP_TITLE: end } ;--- ラベル関数リストボックス配置 ------------------------------------- sdim labelList font "MS ゴシック", 14: objmode 2 pos 0,0: objsize ginfo_winx: listbox lstbx,ginfo_winy,labelList: lstNo=stat: hLst=objinfo(stat,2) oncmd gosub *click, $111 dim gt,4 *@ gosub *resize if c\5=0 { gosub *get_text } wait 10 c++ goto *@b ;---クリック --- *click // 右+左クリックで貼り付きモードに戻す getkey x,2: if x { c=0: goto *resize } // リストボックスの判定 oncmd 0 if lparam == hLst { sendmsg hLst, $188: cmCnt = stat // クリック行取得 if cmCnt != s_cnt and cmCnt >= 0{ split LabelList, "\n", istr split istr( cmCnt ), "|", ss // エディット行選択 sendmsg hIF@hsedsdk, _HSED_SETCARETLINE@hsedsdk, footyId, int( ss( 1 ) )-1 SetForegroundWindow edit_hwnd s_cnt = cmCnt } } oncmd 1 return *resize ; HSPエディタサイズ取得 ;dim gt, 4 GetWindowRect edit_hwnd,varptr(gt): x =gt(0): y =gt(1) GetClientRect edit_hwnd,varptr(gt): sx=gt(2): sy=gt(3) if stat=0 { end } if c=0 | (ginfo_wx1=bx & ginfo_wy1=by) { ;if stat { width 160,354,x+sx-187,y+105 } else { end } width 160,354,x+sx-187,y+105 bx=ginfo_wx1: by=ginfo_wy1 } else { c=1 } ; リスト ;MoveWindow hLst, 0, 0, ginfo_winx, ginfo_winy, 1 if sx=0 { gsel 0,-1: c=2 } else { gsel 0,2 } return *get_text ;hsed_getwnd edit_hwnd, HGW_MAIN: if stat!0 { end } ; アクティブなタブのIDの取得 hsed_getacttabid tabid: if stat == 1: dialog "アクティブなタブのIDの取得エラー": return ; タブのIDからFootyのIDを取得 hsed_getfootyid footyId, tabid ; テキストの文字列長を取得 hsed_gettextlength len, footyId sdim txt, len + 1 ; 編集中のテキストを取得 hsed_gettext txt, footyId if txt == s_txt: return s_txt = txt notesel txt dim lbxGyo, notemax: i=0 // ラベル行 cmFlg = 0 // コメントフラグ sdim labelList repeat notemax wait 0: gyo=cnt sdim tt: noteget tt, gyo tt2 = strtrim( tt, 0, ' ' ): tt2 = strtrim( tt2, 0, ' ' ) if strlen( tt2 ) == 0: continue s="#defcfunc ", "#deffunc ", "#modcfunc ", "#modfunc " repeat length( s ) if instr( tt2, 0, s( cnt ) ) == 0{ // ラベル内容追加セット labelList += strf( "%s |%d\n", tt, gyo+1 ) lbxGyo(i) = gyo: i++ } loop if strmid( tt2, 0, 1 ) == "*" and strmid( tt2, 1, 1 ) != "/"{ labelList += strf( "%s |%d\n", tt, gyo+1 ) lbxGyo( i ) = gyo: i++ } loop objprm lstNo, labelList return



窓月らら

リンク

2019/11/24(Sun) 04:58:14|NO.88916

あっ、上のバグあった。こっちで。。

*resize ; HSPエディタサイズ取得 ;dim gt, 4 GetWindowRect edit_hwnd,varptr(gt): x =gt(0): y =gt(1) GetClientRect edit_hwnd,varptr(gt): sx=gt(2): sy=gt(3) if stat=0 { end } if c=0 | (ginfo_wx1=bx & ginfo_wy1=by) { ;if stat { width 160,354,x+sx-187,y+105 } else { end } width 160,354,x+sx-187,y+105 bx=ginfo_wx1: by=ginfo_wy1 } ; リスト ;MoveWindow hLst, 0, 0, ginfo_winx, ginfo_winy, 1 if sx=0 { gsel 0,-1: c=2 } else { gsel 0,2 } return
あと、どうやらEnterキー長押しで改行しまくってると落ちることがあるようです。
*テキスト取得 の部分、wait 0 ではなく await 1 だと今のところ落ちない。
if cnt\100=0 { await 1 }
でもよさそう。



窓月らら

リンク

2019/11/24(Sun) 06:34:19|NO.88917

上記の不具合はどうやら hsed_gettext txt, footyId の部分で起きてるらしい。
エディタ巻き込んでハングします。仕方ないので

*get_text getkey x,13: if x { return }
として、改行時はスキップするようにしてみました。これで一応落ちなくなってます。
await 1 の部分は wait 0 に戻してもよさそう。



さか

リンク

2019/11/30(Sat) 17:48:01|NO.88959

エディタ入力には一切影響せず裏でリアルタイムにコンパイルをしてエラー表示する機能
を追加しました。
エラーメッセージ行をクリックするとカーソル移動します。
exeにする場合はローカルにhspcmp.dllの配置が必要です。
ラベル関数一覧と別にした方がスッキリするかも知れないです。
あと、ご存知?のようにhsed_gettextには最後の1文字が取得出来ないバグがあるので最後
に改行または空白をつけてください。エラー扱いになります。


#include "hsedsdk.as" #include "user32.as" #include "hspcmp.as" #include "kernel32.as" #uselib "psapi.dll" #func GetModuleFileNameEx "GetModuleFileNameExA" sptr , sptr , sptr , sptr #define tl "HSPラベル・関数一覧" #packopt name tl #packopt hide 1 screen 0, ginfo_dispx, ginfo_dispy, 2 title tl ; ウィンドウのスタイルを変更 GetWindowLong hwnd, -16 SetWindowLong hwnd, -16, stat - $20000 ; HSPエディタ hwnd取得 repeat 10 hsed_getwnd edit_hwnd, HGW_MAIN: if stat == 0: break wait 20 loop if stat != 0: dialog "HSPエディタを起動してください", 1, tl: end ;--- ラベル関数リストボックス配置 ------------------------------------- font "MS ゴシック", 18: objmode 2 sdim labelList objsize ginfo_winx: listbox lstbx, ginfo_winy, labelList: lstNo = stat: hLst = objinfo( stat, 2 ) oncmd gosub *click, $111 s_cnt1 = -1 ;------------------------------------------------------------------------ ; コンパイルウィンドウ ;------------------------------------------------------------------------ screen 1, ginfo_dispx, ginfo_dispy, 2: title "コンパイル" ; ウィンドウのスタイルを変更 GetWindowLong hwnd, -16 SetWindowLong hwnd, -16, stat - $20000 ;--- コンパイルリストボックス配置 ------------------------------------- font "MS ゴシック", 18: objmode 2 sdim cmpList objsize ginfo_winx: listbox lstbx2, ginfo_winy, cmpList: lstNo2 = stat: hLst2 = objinfo( stat, 2 ) oncmd gosub *click, $111 sdim mesbuf: sdim mesbuf_s s_cnt2 = -1 ;HSPインストールディレクトリ取得 hspDir = "" pId = 0: GetWindowThreadProcessId edit_hwnd, varptr( pId ) // プロセスID→プロセス OpenProcess 0x001F0FFF/*PROCESS_ALL_ACCESS*/, 1, pId: prc = stat // ファイル名取得 fileNm = "": GetModuleFileNameEx prc, hMod, varptr( fileNm ), 2048 hspDir = getpath( fileNm, 32 ) ;------------------------------------------------------------------------ ; メインループ ;------------------------------------------------------------------------ *@ gosub *リサイズ gosub *テキスト取得 GetForegroundWindow //アクティブウインドウのハンドル取得 actHwnd = stat if actHwnd == edit_hwnd && actHwnd_s != actHwnd{ ;確実に前面にする gsel 0: SetWindowPos hwnd, -1,0,0,0,0,1|2: SetWindowPos hwnd, -2,0,0,0,0,1|2 gsel 1: SetWindowPos hwnd, -1,0,0,0,0,1|2: SetWindowPos hwnd, -2,0,0,0,0,1|2 } actHwnd_s = actHwnd gosub *コンパイル wait 20 goto *@b stop ;--- コンパイル --- *コンパイル hsed_getwnd edit_hwnd, HGW_MAIN: if stat != 0: end ; アクティブなタブのIDの取得 hsed_getacttabid tabid: if stat == 1: dialog "アクティブなタブのIDの取得エラー": return ; テキストの文字列長を取得 hsed_gettextlength len, footyId sdim txt, len + 1 ; 編集中のテキストを取得 hsed_gettext txt, footyId ; コンパイル用ファイル名 sdim srcFile: hsed_getpath srcFile, tabid srcFile = "" + getpath( srcFile, 32 ): if srcFile = "": srcFile = dir_cur + "\\" srcFile = srcFile +"hspcmptmp" fname = srcFile+".hsp" ; スクリプトファイル名 bsave fname, txt, strlen( txt ) objname = srcFile+".obj" ; オブジェクトファイル名 hsc_ini fname hsc_objname objname hsc_compath hspDir+"\\common\\" hsc_comp 1: res = stat ; コンパイル mesbuf = "" if res != 0{ hsc3_messize sz sdim mesbuf, sz + 1 hsc_getmes mesbuf CmpList = mesbuf } if mesbuf_s != mesbuf{ gsel 1: objprm 0, mesbuf notesel mesbuf sendmsg hLst2, $197, notemax-1 ;LB_SETTOPINDEX sdim mesbuf_s, sz + 1 mesbuf_s = mesbuf } ;title ""+ strlen( mesbuf ) return ;---クリック --- *click oncmd 0 ; ラベル関数一覧 if lparam == hLst { sendmsg hLst, $188: cmCnt = stat // クリック行取得 if cmCnt != s_cnt1 and cmCnt >= 0{ s_cnt1 = cmCnt split LabelList, "\n", istr split istr( cmCnt ), "|", ss // エディット行選択 sendmsg hIF@hsedsdk, _HSED_SETCARETLINE@hsedsdk, footyId, int( ss( 1 ) )-1 SetForegroundWindow edit_hwnd } } ; コンパイル if lparam == hLst2 { sendmsg hLst2, $188: cmCnt = stat // クリック行取得 if cmCnt != s_cnt2 and cmCnt >= 0{ s_cnt2 = cmCnt split CmpList, "\n", istr mmm = istr( cmCnt ) i2 = instr( mmm, 0, "行目)" ) if i2 >= 0{ i1 = i2 - 1: repeat: if peek( mmm, i1 ) == '('{ break }:i1 --:loop iii = int( strmid( mmm, i1+1, i2-i1-1 ) ) // エディット行選択 sendmsg hIF@hsedsdk, _HSED_SETCARETLINE@hsedsdk, footyId, iii - 1 SetForegroundWindow edit_hwnd } } } oncmd 1 return *リサイズ ; HSPエディタサイズ取得 dim gt, 4 GetWindowRect edit_hwnd, varptr( gt ) ; エディタウィンドウの左上X, 左上Y, 右下X, 右下Y x = gt.0: y = gt.1: x2 = gt.2: y2 = gt.3 GetClientRect edit_hwnd, varptr( gt ) ; エディタクライアント領域の高さ, 幅 ( 前2つは未使用0 ) sx = gt.2: sy = gt.3 if x_s = x and y_s = y and sx_s = sx and sy_s = sy: return x_s = x: y_s = y: sx_s = sx: sy_s = sy ; ラベル関数 ウィンドウ --------- gsel 0 width 200, sy-80, x-200, y+80 MoveWindow hLst, 0, 0, ginfo_winx, ginfo_winy, 1 ; x, y, 幅, 高さ, 再描画 gsel 0, 1 ; コンパイル ウィンドウ --------- gsel 1 width sx, 80, x, y2 MoveWindow hLst2, 0, 0, ginfo_winx, ginfo_winy, 1 gsel 1, 1 return *テキスト取得 gsel 0 hsed_getwnd edit_hwnd, HGW_MAIN: if stat != 0: end ; アクティブなタブのIDの取得 hsed_getacttabid tabid: if stat == 1: dialog "アクティブなタブのIDの取得エラー": return ; タブのIDからFootyのIDを取得 hsed_getfootyid footyId, tabid ; テキストの文字列長を取得 hsed_gettextlength len, footyId sdim txt, len + 1 ; 編集中のテキストを取得 hsed_gettext txt, footyId if txt == s_txt: return s_txt = txt notesel txt dim lbxGyo, notemax: i=0 // ラベル行 sdim labelList repeat notemax wait 0: gyo=cnt sdim tt: noteget tt, gyo tt2 = strtrim( tt, 0, ' ' ): tt2 = strtrim( tt2, 0, ' ' ) if strlen( tt2 ) == 0: continue s="#defcfunc ", "#deffunc ", "#modcfunc ", "#modfunc " repeat length( s ) if instr( tt2, 0, s( cnt ) ) == 0{ // ラベル内容追加セット labelList += strf( "%s |%d\n", tt, gyo+1 ) lbxGyo(i) = gyo: i++ } loop if strmid( tt2, 0, 1 ) == "*" and strmid( tt2, 1, 1 ) != "/"{ labelList += strf( "%s |%d\n", tt, gyo+1 ) lbxGyo( i ) = gyo: i++ } loop objprm lstNo, labelList return



ONION software Copyright 1997-2023(c) All rights reserved.