2008年6月7日土曜日

第97回目 QXマクロの紹介(その8)

○第97回目 QXマクロの紹介(その8)
 ※QXマクロは、QXエディタ(テキストエディタ)で使用されるマクロのことです。
  QXマクロでは、全角スペースはデータ以外は認められていません。コピーして使う場合は、必ず半角スペースに変えてください。

 QXはタブ形式のテキストエディタです。その一つ一つのタブを一つのウィンドウといいます。
 最高20まで開くことが出来るそうです(やったことはありませんが…)。
 あるウィンドウのある場所を、違うウィンドウのある場所にコピーする、というのが今回のテーマです。
 ウィンドウはどのようにして特定されているのか、その特定されたコードをどうやって全部取得することができるのか。今のウィンドウはどこに対応するものなのか。
 結果的には簡単でした。

'現在アクティブになっているウインドのハンドル名を取得する
gen_hwnd = @hwnd
'全ウインドのハンドル名を取得する
 j = 0
 hwnd[j] = @@GetHwnd(2) '表示されているタブの順番にハンドル名を取得という宣言で、一番目のハンドル名を取得
if hwnd[0] = gen_hwnd then j0=0 '現在
アクティブになっているウィンドウ番号を取得
 j = 0

 hwnd[j] = @@GetHwnd(2) '表示されているタブの順番にハンドル名を取得という宣言で一番目のハンドル名を取得
 do while hwnd[j]<>0  '二番目以降のハンドル名を取得
j = j + 1
hwnd[j] = @@GetHwnd(0)
if hwnd[j] = gen_hwnd then j0=j '現在アクティブになっているウィンドウ番号を取得
 loop
hwnd_cnt = j  '開かれているウィンドウ数
※ハンドル名はまったく意味不明な数値です。

 現在のウィンドウを選択
 j=j0
 @@Activehwnd hwnd[j]

 ウィンドウの移動
call iskeypressed(KEY_F1)
call iskeypressed(KEY_F2)
  :
  :
elseif iskeypressed(KEY_F1) then 'ウィンドウを左に移動
j = j + hwnd_cnt - 1 '左へ移動
j = j mod hwnd_cnt  'ウィンドウ数で割った余りでウィンドウを選択
@@Activehwnd hwnd[j]
elseif iskeypressed(KEY_F2) then 'ウィンドウを右に移動
j = j + 1
j = j mod hwnd_cnt
@@Activehwnd hwnd[j]
  :

 ここからは、ウィンドウ内の処理ですから、矢印キー等で貼り付け場所を指定します。
 EnterまたはSpaceキーで確定です。
 そこに、貼り付けます。
 クリップボードへのコピー、クリップボードからの貼り付けは前回どおりです。

※これまでのものにウィンドウを渡り歩くという機能をつけると、処理の幅広がります。

0 件のコメント: