用户不与richtextbox交互

时间:2014-03-22 13:57:11

标签: c windows

我创建了一个包含以下样式的richtextbox

WS_VISIBLE | WS_CHILD | ES_NOHIDESEL |  ES_MULTILINE | ES_LEFT | WS_VSCROLL | ES_AUTOVSCROLL

我希望用户无法在其中写入,并且在进入控件时光标不会改变。

我试过

ES_READONLY

属性但是当单击控件时会发出警告噪音并且光标也在变化。

我还试图禁用控件但背景颜色已更改且用户为
不能再使用滚动。

我怎样才能做到这一点。

编辑

我忘了说我已经将控件子类化了,所以我可以接收所有消息

LRESULT CALLBACK RichTextBoxProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwrefData){

    switch(message){
        case WM_PAINT:

            break;
        //(...)

        default:
            return DefSubclassProc(hwnd, message, wParam, lParam);
    }

    return DefSubclassProc(hwnd, message, wParam, lParam);
}

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试:

LRESULT CALLBACK RichTextBoxProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwrefData){

    switch(message){
        case WM_PAINT:

            break;
        case WM_LBUTTONDOWN:
            SetFocus(mainWindowHandle);

            return 0;
        case WM_SETCURSOR:
            if(LOWORD(lParam) == HTCLIENT ){return 1;}

            break;
        default:
            return DefSubclassProc(hwnd, message, wParam, lParam);
    }

    return DefSubclassProc(hwnd, message, wParam, lParam);
}

瓦尔特