2008-10-18

SIPの切り替え

先日 Operaが勝手にSIPを開くので横画面でtouchkeysip/gesture10keyを使っていると画面がSIPで覆われてしまうと書いたところ、NullKeyboardというものがあるよと教えて頂きました。
NullKeyboardは何もしないSIPということで、OperaがいくらSIPを開こうとしても安心という事ですね。
 
これにLPChgExecChangeSIP等を組み合わせれば解決とのアドバイスを頂いたのですが、せっかくなので簡単にSIPを指定できるようなツールを作ってみようと思いました。
 
SIPの選択自体は「Windows Mobileプログラミング徹底理解」のサンプルそのままで割と簡単にできたのですが、いざSIPを切り替えようとするとSIPが変な場所に描画されるという問題が発生しました。
どうも画面が切り替わったときに前のSIPの領域を覚えているような気もするのですが、原因は不明のままです。
 
単純に画面の向きに応じてSipSetCurrentIM()でSIPを切り替えているだけなのですが、何か見落としがあるのでしょうね。
static VOID ChgSip()
{
    DWORD dwData = 0L;
    if (SUCCEEDED(RegistryGetDWORD(SN_DISPLAYROTATION_ROOT, SN_DISPLAYROTATION_PATH, SN_DISPLAYROTATION_VALUE, &dwData))) {
        if (0L == dwData) {
            SipSetCurrentIM(&g_clsidPortrait);
        } else {
            SipSetCurrentIM(&g_clsidLandscape);
        }
        //SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, (WPARAM)SPI_SETSIPINFO, NULL);
    }
}

しかも、その後いろいろ調べていると 実はPQzIIにもSIPの切り替え機能があった事が発覚。 しかもこちらは問題なく動作します。
 
それなら「PQzIIでいいじゃん」とも思うのですが、スッキリしないのでもう少し調べてみようと思います。
 

0 件のコメント: