标题栏上有根别针的效果,一般在最小化按钮旁边.还是彩色的.可以按下去.,有人会吗??
弹出菜单后.怎样动态改变菜单文字?注意改变文字时,菜单不能消失掉.要动态的显示出来....
(比如就像显示进度条样的效果 OR Win2000启动时的效果)

解决方案 »

  1.   

    标题栏上有根别针的效果,一般在最小化按钮旁边.还是彩色的.可以按下去.,有人会吗??
    //你说的这种效果,我估计是这个窗体的标题拦是自己画的,呵呵,然后在上面增加了别针,最小化按钮等图片按钮的效果,如果不是这样的话估计很难做到弹出菜单后.怎样动态改变菜单文字?注意改变文字时,菜单不能消失掉.要动态的显示出来....
    (比如就像显示进度条样的效果 OR Win2000启动时的效果)
    //不怎么理解你的意思,不过要动态改变菜单文字还是好做的,可以使用下面的办法。首先假定你的菜单中有一项mnuItems,要在它的下面增加新的菜单项。你可以在菜单设计窗口中设定Index属性为0。然后,在程序中使用下面的代码就可以增加菜单项了: 
        Load mnuItems(1) 
        mnuItems(1).Caption = "Item 1" 
        mnuItems(1).Visible = True 
        理论上,也可以使用Windows API中的InsertMenu等函数添加菜单,但由于当用户选择菜单时,难以获得相应的消息(可以使用Message Blaster、MsgHook等控件或子类技术),所以很少使用。
      

  2.   

    creazyfish(梳分头的鱼) 那么是怎么画出来按钮的呢.给个例子啊.
    至于动态改变文字..我是这个意思...我用了个计时器.想改变菜单上的文字.比如每0.1秒钟改变一次,就以显示时间为例吧可是不能直接显示出的菜单上文字,没有任何变化...就是不能及时刷新...菜单消失后,再次显示菜单..文字已经改变为现在的...当然还是不能及时改变...不过,我现在试了一下.发现可以改变的...以前在win98系统下确实没有变化...不知什么原因...
      

  3.   

    Public Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long还是用这个函数改标题吧
      

  4.   

    以前曾经制作过一个类似最小化按钮之类的例子,现找出代码贴出来包含一个模块文件 & 一个窗体文件
    模块文件如下:
    ''''***********************************************
    '''制造一个自己的标题栏类按钮(重画效果显示)....
    '''2003/09/09, by spyway[落叶谍]........Option ExplicitPublic Const WM_NCPAINT = &H85Public Const BDR_SUNKEN = &HA
    Public Const BDR_SUNKENINNER = &H8
    Public Const BDR_SUNKENOUTER = &H2
    Public Const BDR_RAISEDOUTER = &H1
    Public Const BDR_RAISEDINNER = &H4
    Public Const BDR_RAISED = &H5
    Public Const BDR_OUTER = &H3
    Public Const BDR_INNER = &HC
    Public Const EDGE_BUMP& = &H9&
    Public Const EDGE_ETCHED& = &H6&
    Public Const EDGE_RAISED& = &H5&
    Public Const EDGE_SUNKEN& = &HA&Public Const BF_LEFT = &H1
    Public Const BF_TOP = &H2
    Public Const BF_BOTTOM = &H8
    Public Const BF_RIGHT = &H4
    Public Const BF_DIAGONAL = &H10
    Public Const BF_MIDDLE = &H800
    Public Const BF_SOFT = &H1000
    Public Const BF_ADJUST = &H2000
    Public Const BF_FLAT = &H4000
    Public Const BF_MONO = &H8000
    Public Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)
    Public Const BF_TOPLEFT = (BF_TOP Or BF_LEFT)
    Public Const BF_TOPRIGHT = (BF_TOP Or BF_RIGHT)
    Public Const BF_BOTTOMLEFT = (BF_BOTTOM Or BF_LEFT)
    Public Const BF_BOTTOMRIGHT = (BF_BOTTOM Or BF_RIGHT)
    Public Const BF_DIAGONAL_ENDBOTTOMLEFT = (BF_DIAGONAL Or BF_BOTTOM Or BF_LEFT)
    Public Const BF_DIAGONAL_ENDBOTTOMRIGHT = (BF_DIAGONAL Or BF_BOTTOM Or BF_RIGHT)
    Public Const BF_DIAGONAL_ENDTOPRIGHT = (BF_DIAGONAL Or BF_TOP Or BF_RIGHT)Public Type RECT
          Left     As Long
          Top      As Long
          Right    As Long
          Bottom   As Long
    End TypePublic Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long
    Public Declare Function DrawEdge Lib "user32" (ByVal hdc As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Long
    Public Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
    Public Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
    Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
    Public Declare Function SetBkColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As LongPrivate varShowText()          ''标题栏显示字符数组变量''重画标题栏函数: PaintRect() 参数如下()
    ''intRectW,intRectH : 按钮宽度&按钮高度
    ''intStartPos        :从关闭按钮右边到最小化按钮左边的距离(不好理解,自己试几次就知道了)
    ''intT%, intB%       :按钮上部,按钮下部
    ''intFormWidth       :要画按钮的窗体宽度
    ''HndForm:            :要画按钮的窗体句柄变量
    ''LngCaptionDc:        标题栏的场景变量Public Sub PaintRect(blnIsRect As Boolean, intRectW%, intRectH%, intStartPos%, _
                                  intTop%, intFormWidth%, HndForm&, RectStyle&)
       Dim objPaintRect As RECT   ''标题栏按钮的矩形对象
       Dim lngCaptiondc As Long
       Dim lngShowFlag As Long
       Dim iloop%, intRectNum%: intRectNum = UBound(varShowText) - 1
       
           lngShowFlag = BF_RECT Or BF_SOFT Or BF_MIDDLE
           lngShowFlag = IIf(blnIsRect, lngShowFlag Or BF_FLAT, lngShowFlag)
           lngCaptiondc = GetWindowDC(HndForm)
           
       For iloop = 0 To intRectNum
          With objPaintRect
             .Right = intFormWidth / Screen.TwipsPerPixelX - intStartPos - iloop * intRectW
             .Left = .Right - intRectW
             .Top = intTop
             .Bottom = intTop + intRectH
          End With
             SetBkMode lngCaptiondc, 1
             DrawEdge lngCaptiondc, objPaintRect, &H9, lngShowFlag
             DrawText lngCaptiondc, varShowText(intRectNum - iloop), -1, objPaintRect, &H1
       Next
    End Sub''将一个字符串分解成单个字符,这些字符将在标题栏上的按钮上显示,
    Public Sub ShowTextConversion(blnPureDigital As Boolean, strShowText As String)
       Dim iloop%, intLen As Integer
       Dim douDigital As Double
       Dim intTextLength As Long  ''要显示的字符串的长度
           intTextLength = Len(strShowText)
           intLen = intTextLength - 1
       ReDim varShowText(intTextLength)   If blnPureDigital Then
          douDigital = Val(strShowText)
          For iloop = 0 To intLen
             varShowText(iloop) = Int((douDigital Mod (10 ^ (intTextLength - iloop))) / (10 ^ (intLen - iloop)))
             ''其实没有什么作用,我怀疑这样做不会带来性能上更多的优化...
             ''建议简单的用下面的.也好省掉blnpureDigital这个参数
             ''2004/12/14 ..ADD 
          Next
       Else
          For iloop = 0 To intTextLength
             varShowText(iloop) = Mid$(strShowText, iloop + 1, 1)
          Next
       End If
    End Sub
    ''///此函数必需重新修改,,做到简单,透明和直观''外界接口:
    ''显示文字,按钮数量,按钮大小,按钮位置,按钮风格,显示窗体句柄,窗体宽度
    ''标题栏场景可用Getwindowdc(hndform)获得
    窗体文件测试如下:窗体加入一个计时器Private Sub Timer1_Timer()
       CallPaintRect
    End SubPrivate Sub CallPaintRect()
       On Error Resume Next
       Dim i&
       ShowTextConversion False, "spyway"
       PaintRect False, 16, 14, 65, 6.5, Me.Width, Me.hwnd, GetWindowDC(hwnd)
    End Sub
    'PS:这个模块中有二个函数,你可以自己加以修改...
    'PS:没有用到的函数定义,常量,你可以删除
    'PS:在此基础上你可以自己扩展其它功能,如左键按下时"按钮"的状态.图像
    'PS:左键弹起里显示的图像...etc..
      

  5.   

    不好意思,好久没来了,其实那个按钮和标题栏都是画的图片,用ps或者firework来画的呀
      

  6.   

    试用了上面的代码...还过的去,谢了PS,Firework 哪跟哪啊