c ++ win32从编辑框中隐藏(禁用)插入符号

时间:2013-11-07 23:59:32

标签: c++ winapi textbox caret

我正在努力使用户可以从只读编辑框中选择文本,但他不会看到闪烁的插入符号。我已经能够使编辑从编辑中消失,但它仍然可以立即看到。

这是我的子类代码:

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?)。我希望它根本不出现。我怎样才能做到这一点?我希望用户仍然可以从编辑中选择文本。

1 个答案:

答案 0 :(得分:1)

您可以尝试将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;
}