没有现成的api调用,如果一定要实现你的想法,用重绘的方法,并不难!

解决方案 »

  1.   

    这个问题应该不难,具体的过程我没有实验过,但方法是可行的,
    光标是一个资源,在VB中默认为竖线,你可以通过调用API将竖线
    改为一横线。
    首先,在VC的资源编辑器中编辑一横线,生成*.res文件,其次
    将*.res文件加入VB的工程,使用API函数HCURSOR LoadCursor( HINSTANCE
     hInstance, LPCTSTR lpCursorName); 就可以了。
      

  2.   

    有API可调,因为我们可以改变光标的高度和宽度,你可以把它的高度变小,宽度变长,你可以试试,当然光标修改后会影响全体,
      

  3.   

    to aplus263:
    你说的是鼠标指针吧?isprogramer说的可能是text里的那个一闪一闪的指示当前打字位置的竖线光标!to isprogramer:
    你说的是这个意思吗?
      

  4.   

    是不是像Dos下的那种光标?
      

  5.   

    我想 aplus263说的是CView里画光标的那个方法吧?在vb里好像不能这么做的。如果是textbox,我想api应该是唯一的解决途径吧。
      

  6.   

    非常抱歉,cursor也可翻译为光标,
    如果是TEXT中的那个,我想可以用API
    中的CreateCaret函数,应该可行。
      

  7.   

    是的,我正是想把光标变成类似于DOS下那一种。
      

  8.   

    to isprogramer:最近我在用VC++做一个文本的IDE环境,改你所说的光标是很简单的事情。
    首先必须你了解一些常识:
    1.你所说的光标是叫Caret,而鼠标的光标则为cursor
    2.你如果想修改Caret的话,就必须注意下面一些情况
    1.Caret整个系统只有一个!所以用过就要删除。
    2.当你检测到你要处理的那个editbox处于active状态时,先destroycaret...
    然后creatcaret(xxx,xxx),参数请自己去查,当editbox处于inactive状态时,不必操心,那个editbox自然会调用destorycaret将其删除.一般情况下,作为一个文本编辑器,只会在active时产生光标,而在inactive时消除光标,在之间的时候都不会去重新生成光标(需注意的是如果editbox的字体发生了变化,它也许会重新生成新的光标),所以你所做的就是在editbox的onactive里做这件事就行了。
    事实上,caret可以修改成你所希望的任何形状。不但可以是平躺的,也可以是方块的,还可是是一个小位图。
    最后,祝你好运。
      

  9.   

    gameboy999说的比较详细啊,要是再多个例子(最好是VB的)就好了:)(哈,我就是贪心不足)
      

  10.   

    例子可以呀,不过我是用delphi写的(因为vb里就是这点不好,任何api的引用必须先宣称)
    首先在form里放一个edit或richedit控件
    然后在edit或richedit控件的 keybuttonup事件里加入下列语句
    delphi:
    ................ONKEYUP(sender:tobject)
    begin
    destroycaret();
    creatcaret(edit1.handle,0,100,100);//我这生成100x100的光标,很好玩:)
    showcaret(edit1.handle);//如果是memo的话就改用memo1.handle,上面一句也是一样
    end;//为什么这样?不在onactive里写呢?因为这个edit比我想象的要“狠”,它每写一个字都把光标重新生成!!!!VB:
    '先宣称
    public ...............creatcaret..........
    .
    .
    .
    private sub form1.onkeyup()
    destroycaret();
    creatcaret(edit1.hwnd,0,100,100);//我这生成100x100的光标,很好玩:)
    showcaret(edit1.hwnd);//如果是richedit的话就改用rechedit.hwnd,上面一句也是一样
    end sub