他ウィンドウの制御について

[戻る]
おばば 2006/07/26(水) 20:33:54
vc6.0でXPのアクセサリにあるスクリーンキーボードみたいなものを作成しているのですが、
別ウィンドウからスクリーンキーボードのボタンやボタンでないところをクリックされると
別ウィンドウはアクティブのままになっています。
いろいろ調べていると、WM_NCACTIVATEで制御できるようなことが書かれていたので、
下記のようにしてみました。

LRESULT CSoftKeyDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
    switch(message){
    case    WM_NCACTIVATE:

      if(wParam == TRUE){
           ::SendMessage(active,WM_NCACTIVATE,1,0);
        return FALSE;
            }
            break;
    }
}

しかしながら、ここにくる以前にアクティブではなくなっているようでしたが、
これだけでは不十分でしょうか?
ご存知の方お願いします。

三草 2006/07/26(水) 21:40:48
> 別ウィンドウからスクリーンキーボードのボタンやボタンでないところを
> クリックされると別ウィンドウはアクティブのままになっています。

スクリーンキーボードのような動作であれば、それでよいのでは?

おばば 2006/07/27(木) 10:14:24
早速の回答ありがとうございます。

WM_NCACTIVATEの処理は入れているのですが、一度アクティブになっているウィンドウが非アク
ティブになってしまいます。

スクリーンキーボードではそのような動きにはなっていませんでした。
スパイでアクティブウィンドウのメッセージをみたのですが、スクリーンキーボードをさわった
瞬間はなにもメッセージがでていませんでした。(WM_NCACTIVATEがでると思ったのですが)

スクリーンキーボードは親ウィンドウをアクティブウィンドウにでもしているのでしょうか?
ご存知でしたらお願いします。

三草 2006/07/27(木) 11:30:23
うーん、現象がイメージできないのですが、
こちらは参考になりますか?
http://forums.belution.com/ja/vc/000/136/56s.shtml

おばば 2006/07/28(金) 16:59:18
[[解決]]
どうもありがとうございます。まさにその現象でした。
紹介して頂いたアドレスを参考にさせて頂きます。

古いスレッドには追加発言できません。