マクロサーバのエディットNo.01365
山紫水明 さん 00/05/12 16:40
 
  みなさん,こんにちは,山紫水明です!

 マクロサーバで
    ddepoke "newcontrol", "edit,MyEdit,";
のようなエディットコントロールの入力を日本語 ON の状態で起動する方法はあり
ませんか?
 テキストの編集は日本語入力中でも,日本語 OFF になってしまいますので。


[ ]
RE:01365 マクロサーバのエディットNo.01367
番頭++ さん 00/05/15 13:07
 
> テキストの編集は日本語入力中でも,日本語 OFF になってしまいますので。

    run "macserv.exe";
    ddeinitiate "HideMacroServer", "DlgService";
    ddepoke "newdialog", "20,エディットのテスト";
    ddepoke "newcontrol", "edit,MyEdit,";
    ddepoke "newcontrol", "okcancel";
    if( ! imestate ){
    imeswitch;  //  このようなことですか ???
    }
    #hwnd = hidemaruhandle(0);
    ddeexecute "dialog " + str(#hwnd);
    if( imestate ){
    imeswitch;  //  このようなことですか ???
    }
endmacro;

[ ]
RE:01367 マクロサーバのエディットNo.01368
番頭++ さん 00/05/15 14:34
 
>    imeswitch;  //  このようなことですか ???

勘違いですね、macserv.exe の IME の状態の問題ですよね、
macserv.exe 自体が、その機能を持つしか、方法が無いような気がします。
macserv.exe の仕様の問題かも ...

[ ]
RE:01368 マクロサーバのエディットNo.01369
山紫水明 さん 00/05/15 20:27
 
    番頭++さん こんばんは。

》macserv.exe の IME の状態の問題ですよね、

 そうなんです。

》macserv.exe 自体が、その機能を持つしか、方法が無いような気がします。
》macserv.exe の仕様の問題かも ...

 やはりそういうことなんでしょうね。
 番頭++さんみたいなベテランの方に言っていただくと,やはりだめかとがっかり
もするし,もう悩むこともないと安心もします(^^;

 では, (^^)/~
                                        山紫水明


[ ]
RE:01369 マクロサーバのエディットNo.01370
杉浦 まさき さん 00/05/15 23:40
 
山紫水明さん、番頭++ さん、こんばんは。
お久しぶりの 杉浦 まさき です。
#目下就職活動中です(^^;。<まだ決まってないですが(ToT)

>》macserv.exe 自体が、その機能を持つしか、方法が無いような気がします。
>》macserv.exe の仕様の問題かも ...
>
> やはりそういうことなんでしょうね。

IME の制御自体は多分やってやれないことはないと思います。
#実際にやっているものを見かけた覚えもありますし。

…という前振りをしておいて(^^;、これまた面白そうなネタなので
チャレンジしてみたいと思います(田楽鯖&DLLで)。


[ ]
RE:01370 マクロサーバのエディットNo.01371
杉浦 まさき さん 00/05/16 03:21
 
ども、再び 杉浦 です。

>IME の制御自体は多分やってやれないことはないと思います。
>#実際にやっているものを見かけた覚えもありますし。
>…という前振りをしておいて(^^;、これまた面白そうなネタなので
>チャレンジしてみたいと思います(田楽鯖&DLLで)。

ON/OFF の切替は割とあっさりできてしまいました(^^;。
ただ、IME を使えなくできるようにもしたいのですが、
その方法が今の所わからないので…さてどうしたもんかな、と。


[ ]
RE:01371 マクロサーバのエディットNo.01372
番頭++ さん 00/05/16 18:15
 
お久しぶりです。

imestate, imeswitch のような機能をつけたのですか ???
.EXE (以前の方式) と .DLL (V 3.0x からの方式) で同じでしたか ???

> ただ、IME を使えなくできるようにもしたいのですが、
> その方法が今の所わからないので…さてどうしたもんかな、と。

サーバは常駐して IME の (前回の) 状態が記憶されるんですよね。 ddepoke
"newcontrol","edit,MyEdit,"; で "edit,MyEdit,IMEON" とかの方が便利なよう
な気がします。該当する edit がフォーカスを得た時点で  IME をコントロール
したいのではないかと想像しています。個人的にはサーバを使う機会は少ないの
ですが。

> #目下就職活動中です(^^;。<まだ決まってないですが(ToT)
がんばってくださいね ...


[ ]
RE:01371 マクロサーバのエディットNo.01373
山紫水明 さん 00/05/16 21:50
 
    杉浦 まさきさん こんばんは,お久しぶりです。

 この話題だとご登場願えるのではないかと期待していました(^^;

》#目下就職活動中です(^^;。<まだ決まってないですが(ToT)

 ご幸運をお祈りします。

》ON/OFF の切替は割とあっさりできてしまいました(^^;。

 さすがですね。

》ただ、IME を使えなくできるようにもしたいのですが、

 私の場合は ON/OFFの切り替えができればそれで用は足せます。
 番頭++さんが補足してくださいましたように,該当部分を Edit するときに IME
が ON になってくれればいいのですが。

 では, (^^)/~
                                        山紫水明


[ ]
RE:01372 マクロサーバのエディットNo.01375
杉浦 まさき さん 00/05/16 23:35
 
番頭++ さん、こんばんは。
杉浦 まさき です。

> ddepoke "newcontrol","edit,MyEdit,"; で "edit,MyEdit,IMEON" とかの方が
>便利なような気がします。該当する edit がフォーカスを得た時点で
>IME をコントロールしたいのではないかと想像しています。

ええと、そうなってます(^^;。
フォーカスを得た時点での IME の状態を
個々のコントロール毎に指定できます。
で、その初期状態を指定するコマンドとして、
エディットコントロールについては動作が未定義だった
setstate/SETCTRLSTATE() を使うことにしました。
#将来のバージョン(v2〜)で変更する可能性が高いですが。

>> #目下就職活動中です(^^;。<まだ決まってないですが(ToT)
>がんばってくださいね ...

温かいお言葉どうもありがとうございますm(_ _)m。

[ ]
RE:01373 マクロサーバのエディットNo.01376
杉浦 まさき さん 00/05/16 23:40
 
山紫水明さん、こんばんは。
杉浦 まさき です。

>》#目下就職活動中です(^^;。<まだ決まってないですが(ToT)
> ご幸運をお祈りします。

どうもありがとうございますm(_ _)m。
年齢等条件的にちょっと厳しいですが、めげずに頑張ってます(^^;。

>》ただ、IME を使えなくできるようにもしたいのですが、
> 私の場合は ON/OFFの切り替えができればそれで用は足せます。

う〜ん、それではすぐにでも公開作業をしたいと思います。

> 番頭++さんが補足してくださいましたように,該当部分を Edit するときに IME
>が ON になってくれればいいのですが。

番頭++ さんへのレスにも書きましたが、
これは既にそうなってますのでご安心を(^^;。


[ ]
RE:01376 マクロサーバのエディットNo.01378
杉浦 まさき さん 00/05/17 02:18
 
ども、再び 杉浦 です。

>>》ただ、IME を使えなくできるようにもしたいのですが、
>> 私の場合は ON/OFFの切り替えができればそれで用は足せます。
>う〜ん、それではすぐにでも公開作業をしたいと思います。

僕の Web ページの方の公開作業は終わりました。
http://www.ceres.dti.ne.jp/~sugiura/

秀まるお氏のページへのアップはもう少し様子を見ます。

ではでは。

[ ]
RE:01378 マクロサーバのエディットNo.01379
山紫水明 さん 00/05/17 20:07
 
    杉浦 まさきさん こんばんは。

》僕の Web ページの方の公開作業は終わりました。

 どうもありがとうございます。早速にダウンロードしました。
それで,サーバはまだ使い慣れていないものでヘルプを見てもよくわかりませんの
で,お尋ねします。

    ddepoke "newcontrol", "edit,edt,初期化文字列";

対して,新バージョンではどのようにしたら, IME が ON になるのでしょうか?
    ddeexecute "setstate" 何とかかんとか,前か後に書くのでしょうか?

 では, (^^)/~
                                        山紫水明


[ ]
RE:01379 マクロサーバのエディットNo.01381
杉浦 まさき さん 00/05/18 00:42
 
山紫水明さん、こんばんは。
杉浦 まさき です。

>それで,サーバはまだ使い慣れていないものでヘルプを見てもよくわかりませんの
>で,お尋ねします。

うぅ、わかり難いヘルプですんませんm(_ _)m。

>    ddepoke "newcontrol", "edit,edt,初期化文字列";
>対して,新バージョンではどのようにしたら, IME が ON になるのでしょうか?
>    ddeexecute "setstate" 何とかかんとか,前か後に書くのでしょうか?


ddepoke "newcontrol", "edit,edt,初期化文字列";
ddepoke "default", "1"; // IME を ON
...

でOKです。また、(あまり意味はないかもしれないですが(^^;)
ダイアログの表示中でも

ddeexecute "setstate edt 2"; // IME OFF

とすれば動的に設定を変更できます。
#ちと誤解を招きそうなので補足ですが、
 setstate で変えられるのはあくまでもフォーカスを得た時の動作だけで、
 エディットボックスへの入力中に IME の ON/OFF を
 制御できるわけではありません。


[ ]
RE:01381 マクロサーバのエディットNo.01383
山紫水明 さん 00/05/18 22:48
 
    杉浦 まさきさん こんばんは。
 どうもありがとうございます。

》うぅ、わかり難いヘルプですんませんm(_ _)m。

 いや,こちらの理解力の問題でして。

》ddepoke "newcontrol", "edit,edt,初期化文字列";
》ddepoke "default", "1"; // IME を ON
》...
》でOKです。

 あはー,なるほど! 言われてみれば簡単なことでしたが,慣れないとそれがわ
からない(^^;

で,この際ついでに,お尋ねします。

    ddepoke "newcontrol", "check,MyCheck1,チェックボックス1";
    ddepoke "default", "1";
    ddepoke "newcontrol", "check,MyCheck2,チェックボックス2";
    ddepoke "default", "1";
    ddepoke "newcontrol", "check,MyCheck3,チェックボックス3";
    ddepoke "newcontrol", "check,MyCheck4,チェックボックス4";

として,ダイアログを表示した後,
 チェックボックス4をチェックしたら,連動して,チェックボックス1のチェッ
クが外れるようにするには,どうしたらいいのでしょうか?

 では, (^^)/~
                                        山紫水明


[ ]
RE:01383 マクロサーバのエディットNo.01384
杉浦 まさき さん 00/05/18 23:38
 
山紫水明さん、こんばんは。
杉浦 まさき です。

>    ddepoke "newcontrol", "check,MyCheck1,チェックボックス1";
>    ddepoke "default", "1";
>    ddepoke "newcontrol", "check,MyCheck2,チェックボックス2";
>    ddepoke "default", "1";
>    ddepoke "newcontrol", "check,MyCheck3,チェックボックス3";
>    ddepoke "newcontrol", "check,MyCheck4,チェックボックス4";
>
>として,ダイアログを表示した後,
> チェックボックス4をチェックしたら,連動して,チェックボックス1の
>チェックが外れるようにするには,どうしたらいいのでしょうか?

まず MyCheck4 に通知コードを割り当てて、
アドバイスループ内でその通知コードが来た場合に
MyCheck4 がチェックされているかを調べ、チェックされていたら
MyCheck1 のチェックを外せばよいです。

具体的には以下のような感じです。

// 通知コードの割り当て
ddepoke "newcontrol", "check,MyCheck4,チェックボックス4";
ddepoke "notify", "10"; // 数値は(0,1,-1 を除き)適当

// アドバイスループ
while (1) {
    $item = "";
    ddewaitadvice $item, 100;
    if ($item == "1" || $item == "0") break;
    if ($item == "10") {
        // MyCheck4 がクリックされた
        if (dderequest("getstate MyCheck4") == "1") {
            // MyCheck4 がチェックされたので
            // MyCheck1 のチェックを外す
            ddeexecute "setstate MyCheck1 0";
        }
    }
    ...
}


[ ]