• MFC对话框的Edit控件实现响应Ctrl+A全选,并实现自动/手动换行+滚动条


    首先是在Properties中设置控件属性的问题,首先必须得将Mutilines属性设为true,才能支持多行显示。

    手动换行(按Enter键换行):将Want Return属性设为true

    自动换行(即文本超过edit控件宽度后换行):将Vertical Scroll设为true,将Horizontal Scroll设为false,将Auto HScroll设为false,将Auto HScroll设为true。

    然后实现对Ctrl+A的响应,这里需要重载对话框类CXXXDlg的PreTranslateMessage函数

    BOOL CXXXCommDlg::PreTranslateMessage(MSG* pMsg)
    {
        CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_RECV_MSG);
        if (pMsg->message == WM_KEYDOWN &&
            pMsg->hwnd == pEdit->GetSafeHwnd())
        {
            // 响应Ctrl+A
            if ((GetKeyState(VK_CONTROL) & 0x8000) && pMsg->wParam == 'A')
            {
                CString buf;
                GetDlgItemText(IDC_EDIT_RECV_MSG, buf);
                pEdit->SetSel(0, buf.GetLength());
            }
        }
        return CDialogEx::PreTranslateMessage(pMsg);
    }

    GetKeyState() & 0x8000是将Ctrl/Shift/Alt键与其他键作比较,Shift对应VK_SHIFT,Alt对应VK_MENU。然后其他键会存在wParam中。

    CEdit::SetSel函数第一个参数是起始字符编号,第二个参数是选中的字符数量。所以这里是将所有字符选中

  • 相关阅读:
    Spring参数解析器HandlerMethodArgumentResolver
    Spring拦截器HandlerInterceptor和HandlerInterceptorAdapter
    3,turicreate入门
    2,turicreate入门
    flink 配置
    maven打包,带依赖jar
    python缓存所在目录
    docker基础
    yum安装
    python3 flink 安装
  • 原文地址:https://www.cnblogs.com/Harley-Quinn/p/7375400.html
Copyright © 2020-2023  润新知