代码之家  ›  专栏  ›  技术社区  ›  Bob Sammers 15ee8f99-57ff-4f92-890c-b56153

在C程序中剪切插入符号

  •  2
  • Bob Sammers 15ee8f99-57ff-4f92-890c-b56153  · 技术社区  · 16 年前

    插入符号夹在绘制它的控件中。因此,我知道一种解决方案是将文本放置在没有边框的单独子控件中。但是,如果有比重新设计控件的这一部分更简单的方法,我想首先寻找它。

    提前感谢您的帮助!

    2 回复  |  直到 16 年前
        1
  •  0
  •   Chris Taylor    16 年前

    那么,我是否正确地理解了您的问题是默认插入符号“出血”到您的边缘区域?

    我认为您最好的选择是将文本放置在您提到的辅助控件或子控件上。您可以考虑的另外两个选项,它们可能符合您的要求

    1-使用CreateCaret创建一个较小的光标,使其适合剪裁区域。当然,您仍然需要确保没有将插入符号放置在边界空间中。

    [DllImport("user32", SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    private extern static bool CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidth, int nHeight);
    
    // Create a caret which is 2 pixels wide by 8 high
    CreateCaret(theControl.Handle, IntPtr.Zero, 2, 8);
    

    但归根结底,我认为您选择使用子控件将提供最多的控件。

        2
  •  1
  •   Alex K.    16 年前

    如何定义当前剪辑的区域 SetClip() WM_NCCALCSIZE ).

    推荐文章