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;
}
}
しかしながら、ここにくる以前にアクティブではなくなっているようでしたが、
これだけでは不十分でしょうか?
ご存知の方お願いします。
> 別ウィンドウからスクリーンキーボードのボタンやボタンでないところを
> クリックされると別ウィンドウはアクティブのままになっています。
スクリーンキーボードのような動作であれば、それでよいのでは?
早速の回答ありがとうございます。
WM_NCACTIVATEの処理は入れているのですが、一度アクティブになっているウィンドウが非アク
ティブになってしまいます。
スクリーンキーボードではそのような動きにはなっていませんでした。
スパイでアクティブウィンドウのメッセージをみたのですが、スクリーンキーボードをさわった
瞬間はなにもメッセージがでていませんでした。(WM_NCACTIVATEがでると思ったのですが)
スクリーンキーボードは親ウィンドウをアクティブウィンドウにでもしているのでしょうか?
ご存知でしたらお願いします。
うーん、現象がイメージできないのですが、
こちらは参考になりますか?
http://forums.belution.com/ja/vc/000/136/56s.shtml
どうもありがとうございます。まさにその現象でした。
紹介して頂いたアドレスを参考にさせて頂きます。