..

解决方案 »

  1.   


    是指动态添加控件到窗体上吧?用controls.add方法。
      

  2.   

    hwndtext=createwindow("EDIT"....)
    setwindowlong hwndtext,gwl_hwnd,...
    setparent form1.hwnd,hwndtext
    showwindow hwndtext
    ...
      

  3.   

    就是不利用现成资源,用API 自己做个文本框类,换句话说就是用纯代码绘图方式实现文本框编辑功能。当然想实现类似文本编辑器之类的功能,只是难度太大,先摸索着来吧,
     谢谢。
      

  4.   

    vbAccelerator RichEdit Control
    An implementation of the Microsoft RichEdit control directly from the API for more flexibility and controlhttp://www.vbaccelerator.com/codelib/richedit/richedit.htm
      

  5.   

    TextBoxEx Control
    Implement an extended version of the TextBox control by using the API directlyhttp://www.vbaccelerator.com/codelib/submit/txtboxex.htm
     
      

  6.   

    dim hEditFirst as long
    dim hEditSecond as long
    hEditFirst=CreateWindowEx(WS_EX_CLIENTEDGE,"Edit","文本框 一", _
              WS_CHILDWINDOW or WS_VISIBLE,8,8,233,24,me.hwnd,NULL,NULL,NULL);hEditSecond=CreateWindowEx(WS_EX_CLIENTEDGE,"Edit","文本框二", _
              WS_CHILDWINDOW or WS_VISIBLE,8,34,233,24,hwnd,NULL,NULL,NULL);可以参考一下我刚发布的软件,里面有 C++ 的源代码,其中的窗体,按钮和文本框就是用 API 创建出来的,其实创建其它可视控件方法都差不多,只是类名和风格不同而已。
      

  7.   

    忘了给链接。http://www.hidotnet.com/Forum/View.aspx?fbId=14&Id=2861
      

  8.   

    倒,不好意思,把 null 改为 0
      

  9.   

    都是夠強悍的人,前次還看影子用api 做窗體,偶實在沒有這閒心,偶覺得能用的都用。^-^樓上各位,實在pfpf
      

  10.   

    再次谢谢各位帮忙 另请教hisofty(瘦马)兄,vbAccelerator RichEdit Control 例子一运行就提示:[[BadImplementsRefinCompatlib]]是是么意思,如何解决 感谢了
      

  11.   

    不是VB本来自己就有个基本控件UserControl吗,用它来扩展撒。
    当然光标资源要可能用到API了,不过自己绘应该也是可以的。
    一切都得自己搞,包括绘制文本、选择、修改等,工作量很大的
      

  12.   

    写一个Edit要解决如下问题:
    1、如果用VB做,最好不用PictureBox,否则会有大麻烦
    2、解决中文输入中的“光标跟随”问题
    Dim comf As COMPOSITIONFORM
        comf.dwStyle = &H2
        comf.ptCurrentPos.x = x 
        comf.ptCurrentPos.y = y 
        
        hIMC = ImmGetContext(hwnd)
        Call ImmSetCompositionWindow(hIMC, comf)
        Call ImmReleaseContext(hwnd, hIMC)3、解决英文、中文不等宽的问题(最简单就是都用全角)
    4、解决存储问题,VB中没有指针,实现链表够痛苦的(请问高手该怎么办?)
    5、解决屏幕滚动问题(用双缓冲绘图)
    6、还要解决选中问题
      

  13.   

    如果用VB做,最好不用PictureBox,否则会有大麻烦
    ---------------------------------------------------
    最好在TextBox基础上用SubClass改造
    反正WM_SETFOCUS、WM_KILLFOCUS、WM_SIZE、WM_VSCROLL、WM_KEYDOWN、WM_CHAR、WM_IME_CHAR、WM_PAINT都要改写
      

  14.   

    to syansea:
    //1、如果用VB做,最好不用PictureBox,否则会有大麻烦
    //2、解决中文输入中的“光标跟随”问题
    //Dim comf As COMPOSITIONFORM
    //    comf.dwStyle = &H2
    //    comf.ptCurrentPos.x = x 
    //    comf.ptCurrentPos.y = y 
        
    //    hIMC = ImmGetContext(hwnd)
    //    Call ImmSetCompositionWindow(hIMC, comf)
    //    Call ImmReleaseContext(hwnd, hIMC)//3、解决英文、中文不等宽的问题(最简单就是都用全角)
    //4、解决存储问题,VB中没有指针,实现链表够痛苦的(请问高手该怎么办?)
    //5、解决屏幕滚动问题(用双缓冲绘图)
    //6、还要解决选中问题
    1, 楼主用 Edit 类就可以了
    2, 满足条件一就不存在这个问题
    3, 中英文等宽问题可以用 strconv 相互转换,也可以用 WM_SETFONT 解决
    4, VB中可以操作指针这样的东东,只是和C++中的概念不同而已,而且不知道你拿链表干嘛,给出一个最简单的循环链表    Option Explicit    Private Type LinkTab
            MemberName  As String
            MemberPoint As Long
        End Type    Private Sub Command1_Click()
            Dim ltTst(6) As LinkTab
            ltTst(0).MemberName = "http"
            ltTst(0).MemberPoint = VarPtr(ltTst(1))
            ltTst(1).MemberName = "://"
            ltTst(1).MemberPoint = VarPtr(ltTst(2))
            ltTst(2).MemberName = "www"
            ltTst(2).MemberPoint = VarPtr(ltTst(3))
            ltTst(3).MemberName = "."
            ltTst(3).MemberPoint = VarPtr(ltTst(4))
            ltTst(4).MemberName = "csdn"
            ltTst(4).MemberPoint = VarPtr(ltTst(5))
            ltTst(5).MemberName = "."
            ltTst(5).MemberPoint = VarPtr(ltTst(6))
            ltTst(6).MemberName = "net"
            ltTst(6).MemberPoint = VarPtr(ltTst(0))
        End Sub
    5, 用 MultiLine 风格的
    6, 条件一都满足了PS: 主要是对它的消息处理,可以用子类或超类实现
      

  15.   

    十分感谢各位的指教,瘦马兄给的连结中已经给出了范例,我之所以想自己写(应该说是学习)只是因为对标准控件不满意,如不能加背景图片,不能透明,不能加入动画,也不能在上面绘图等等,当然使用其他手段能近似达到,只是不但麻烦且得不偿失。现在问题是给出的范例 TextBox控件可正常运行,但richedit控件不能 只要一运行就提示 “[[BadImplementsRefinCompatlib]]”不知道是是么意思,那位朋友能否解释一下 谢谢!
      

  16.   

    使用 vb5 版本的 SSubTmr.dll,然后再重新编译一下 vbalEdit.ocx,再打开示例就没问题了。