最近有个项目,需要从底层开始编写。从PictureBox派生,每打一个字,就会在PictureBox上显示,并且闪烁的光标向后移动。那么,这该如何实现?如何显示闪烁,可以移动的光标?

解决方案 »

  1.   

    光标的闪烁写成一个函数,使用线程使其运行;光标移动其实就是更改光标的位置参数。字符显示:读取字符库,在PictureBox对应位置按照字符库中获得的矩阵绘制。
      

  2.   

    1楼的回答似乎比较麻烦。听说Windows里有光标的API函数。写字的话,直接在上头用GDI+写不就行了吗。
      

  3.   

    键盘事件你怎么弄?输入法你怎么弄?ime的接口要搞定
      

  4.   


    //新建光标
            [DllImport("user32.dll")]
            static extern bool CreateCaret(IntPtr hWnd, IntPtr hBitmap,int nWidth,int nHeight);        //显示光标
            [DllImport("user32.dll")]
            static extern bool ShowCaret(IntPtr hWnd);        //隐藏光标
            [DllImport("user32.dll")]
            static extern bool HideCaret(IntPtr hWnd);        //设置光标位置
            [DllImport("user32.dll")]
            static extern bool SetCaretPos(int X,int Y);
            
            //获得输入焦点
            [DllImport("user32.dll")]
            static extern IntPtr SetFocus(IntPtr hWnd);
          
          //例子:Panel的鼠标释放事件里
           void panel1_MouseUp(object sender, MouseEventArgs e)
            {
                CreateCaret(panel1.Handle, (IntPtr)null, 1, 16);
                SetCaretPos(e.X, e.Y-16/2);
                ShowCaret(panel1.Handle);
                SetFocus(panel1.Handle);
            }
    这是我一个工程的一小部分代码 希望能对你有帮助
      

  5.   

    自于输入法  你可以看看这个帖子上说到的控件
    http://topic.csdn.net/u/20080121/18/94bb2cb9-76e3-4129-aa0e-ca403f08bac5.html
      

  6.   

    这是我写的十六进制编辑器,楼主可以下来参考一下。
    http://download.csdn.net/source/346182
      

  7.   

    GDI+ 可以直接将字符串写在PictureBox上,控制光标可以用6楼的办法