就用这两个API:
Public Declare Function DestroyCaret Lib "user32" Alias "DestroyCaret" () As Long
Public Declare Function CreateCaret Lib "user32" Alias "CreateCaret" (ByVal hwnd As Long, ByVal hBitmap As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long是横是竖调整nWidth,nHeight 这两个参数到适当的值就会有或横或竖的效果了,
如果你还要把图片都翻过来,建议用图形处理软件……

解决方案 »

  1.   

    我是在文本框中做光标,还有这俩个API怎么用呀能不能说一下
      

  2.   

    看名字都知道了啊DestroyCaret 就是把原来的光标卸载
      注意:使用这个函数的时候,一定要使焦点在你要更新光标的那个文本框里。CreateCaret 是创建光标,
    它的参数说明:
      hwnd :要创建光标的控件的句柄,比如你要在text1里面创建,就是text1.hwnd
      hBitmap :光标图片的句柄
      nWidth,nHeight :光标的宽和高
      

  3.   

    Private Sub Command1_Click()
    ShowInputCaret
    End Sub
    Public Function ShowInputCaret() As Long
        Dim pt As POINTAPI
        Dim lngWidth As Long '光标宽度
        
        pt.X = 5
        pt.Y = 12
        lngWidth = 8
        Call CreateCaret(Text1.hwnd, 0, lngWidth, 2)
        SetCaretPos pt.X, pt.Y
        ShowCaret Text1.hwnd
    End Function
      

  4.   

    请问 TrueZq(蟑螂Dim pt As POINTAPI的pointapi在那里引用或声明
      

  5.   

    对不起请问这个怎么用DestroyCaret 就是把原来的光标卸载
      

  6.   

    直接用就ok了
    比如:
       text1.setfocus 
       destroycaret
    就可以把text1里面的光标删除.
      

  7.   

    阿水先生应该锻炼想象力,您把DestroyCaret的调用放到文本框的GetFocus事件函数里不就行了?!
      

  8.   

    AgedBOY(禁欲的情种)兄弟别说是Text1_GotFocus就是Text1_Change,Form_Resize和KeyPress我都试过了也是不行呀
      

  9.   

    Private Sub Form_Paint()
    Text1.SetFocus
    DestroyCaret
    CreateCaret Text1.hwnd, Picture1.Picture, 10, 1
    ShowCaret Text1.hwnd
    End Sub测试过了,没问题
      

  10.   

    谢谢canyqf兄弟你这段代码是把离开焦点时的问题解决了,但是不能解决切换窗口时的问题,如果兄弟还有什么好办法可以告诉我。