---- Support BBS ----
[ 前の記事 | 次の記事 | 一覧 ]

[00649] 1364 byte
投稿日時: 2002年6月28日(金) 23時27分3秒
ホスト名: PPPa279.osaka-ip.dti.ne.jp(210.170.221.29)

Re: 他のファイルの値でダイアログを設定

投稿者: 杉浦 まさき
e-mail: (入力されていません)
   URL: (入力されていません)

毘沙門天さん、こんばんは。
杉浦 まさき です。

>  田楽DLLを利用してダイアログを作成し、そこの参照ボタンから
> ファイルを指定するとダイアログのエディットボックスに指定ファイル
> から検索してきた文字列をSETCTRLSTRINGで設定するような処理を組ん
> だのですが、秀丸が他のファイルを開いた後、「DLLがロードされてい
> ないのにdllfunc関数が使われました」とエラー表示されて止まってし
> まいます。
>  hidemaruhandle()でハンドルを保存して、openfileで指定ファイル
> オープンして検索&文字列コピー後にsetactivehidemaru()で元に戻っ
> てこようとしたのですが、これがうまくいかないようです。

openfile 等で他の秀丸ウィンドウを開くとそのウィンドウに対して
マクロの処理が続行されるわけですが、その際は再び loaddll で DLL を
ロードしてください。

// ex.
#hwnd = hidemaruhandle(0);
loaddll hidemarudir + "\\DengakuDLL.dll";
$file = dllfuncstr("GETFILENAME", #hwnd, "ファイルの選択", ".", "テキスト文書(*.txt)");

openfile $file;
// 以後 $file を開いたウィンドウ上
#hwnd_new = hidemaruhandle(0);
loaddll hidemarudir + "\\DengakuDLL.dll"; // 再び DLL をロード
// ... $file に対する処理
setactivehidemaru #hwnd;
// 既に loaddll したウィンドウでは loaddll は必要ない
// ...
setactivehidemaru #hwnd_new;
// ...
freedll; // $file のウィンドウ上でロードした DLL のアンロード
setactivehidemaru #hwnd;
closehidemaruforced #hwnd_new;
freedll; // 最初にロードした DLL のアンロード
endmacro;



[ 前の記事 | 次の記事 | 一覧 ]


<648> 他のファイルの値でダイアログを設定 (毘沙門天) 06/28 17:21
>649< Re: 他のファイルの値でダイアログを設定 (杉浦 まさき) 06/28 23:27

---- Support BBS ----