質問

ユーザーが読み取り専用の編集ボックスからテキストを選択できるようにしようとしていますが、点滅する世話は表示されません。私は編集から世話を消滅させることができましたが、それはまだすぐに見ることができます。

これはサブクラスの私のコードです:

LRESULT CALLBACK UserInfoProc (HWND hUserInfoWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
{

    HideCaret(hUserInfoWnd);

    return DefSubclassProc(hUserInfoWnd, uMsg, wParam, lParam);

}

それは控えめなコードです、しかし、それは私が望むことをほとんどします。

したがって、編集をクリックすると、一瞬(50ms?)を見ることができます。まったく表示されないことを望んでいます。これどうやってするの?ユーザーに編集からテキストを選択できるようにしたいと考えています。

役に立ちましたか?

解決

あなたは移動してみることができます HideCaret() 後に電話します DefSubclassProc(), 、現時点では、メッセージがカレットをトリガーした場合から 再び隠されているというメッセージ。

また、表示される世話をトリガーする唯一のメッセージは WM_SETFOCUS, 、そのため、そのメッセージのみをテストすることができます。例えば、

LRESULT CALLBACK UserInfoProc (HWND hUserInfoWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
{
    LRESULT lRes = DefSubclassProc(hUserInfoWnd, uMsg, wParam, lParam);
    if (uMsg == WM_SETFOCUS) // maybe?
        HideCaret(hUserInfoWnd);
    return lRes;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top