有图标能够点击实现最小、最大化?------关键是这???
用过Delphi的朋友可能都知道,以上说的功能在Delphi里都有的!!!

解决方案 »

  1.   


    to : ferrytang(水油) 仅仅showintaskbar=true 是不行的!要用下面的代码!Private Sub Form_Load()
      ChangeWindowStyle Me.hwnd
    End SubPublic Sub ChangeWindowStyle(ByVal hwnd As Long)
        '
        Dim oldStyle As Long
        
        oldStyle = GetWindowLong(hwnd, GWL_STYLE)
        oldStyle = oldStyle Or WS_SYSMENU
        oldStyle = oldStyle Or WS_MINIMIZEBOX
        SetWindowLong hwnd, GWL_STYLE, oldStyle
        
    End SubPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const GWL_EXSTYLE = (-20)
    Private Const GWL_HINSTANCE = (-6)
    Private Const GWL_HWNDPARENT = (-8)
    Private Const GWL_ID = (-12)
    Private Const GWL_USERDATA = (-21)
    Private Const GWL_WNDPROC = (-4)
    Private Const GWL_STYLE = (-16)Private Const WS_ACTIVECAPTION = &H1
    Private Const WS_BORDER = &H800000
    Private Const WS_CAPTION = &HC00000         ' WS_BORDER Or WS_DLGFRAME
    Private Const WS_CHILD = &H40000000
    Private Const WS_CHILDWINDOW = (WS_CHILD)
    Private Const WS_CLIPCHILDREN = &H2000000
    Private Const WS_CLIPSIBLINGS = &H4000000
    Private Const WS_DISABLED = &H8000000
    Private Const WS_DLGFRAME = &H400000
    Private Const WS_GROUP = &H20000
    Private Const WS_HSCROLL = &H100000
    Private Const WS_MAXIMIZE = &H1000000
    Private Const WS_MAXIMIZEBOX = &H10000
    Private Const WS_MINIMIZE = &H20000000
    Private Const WS_MINIMIZEBOX = &H20000
    Private Const WS_OVERLAPPED = &H0&
    Private Const WS_POPUP = &H80000000
    Private Const WS_SYSMENU = &H80000
    Private Const WS_TABSTOP = &H10000
    Private Const WS_THICKFRAME = &H40000
    Private Const WS_TILED = WS_OVERLAPPED
    Private Const WS_VISIBLE = &H10000000
    Private Const WS_VSCROLL = &H200000
    Private Const WS_GT = (WS_GROUP Or WS_TABSTOP)
    Private Const WS_ICONIC = WS_MINIMIZE
    Private Const WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX)
    Private Const WS_POPUPWINDOW = (WS_POPUP Or WS_BORDER Or WS_SYSMENU)
    Private Const WS_SIZEBOX = WS_THICKFRAME
    Private Const WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW
    Private Const WS_EX_ACCEPTFILES = &H10&
    Private Const WS_EX_APPWINDOW = &H40000
    Private Const WS_EX_CLIENTEDGE = &H200&
    Private Const WS_EX_CONTEXTHELP = &H400&
    Private Const WS_EX_CONTROLPARENT = &H10000
    Private Const WS_EX_LAYERED = &H80000
    Private Const WS_EX_DLGMODALFRAME = &H1&
    Private Const WS_EX_LAYOUTRTL = &H400000
    Private Const WS_EX_LEFT = &H0&
    Private Const WS_EX_LEFTSCROLLBAR = &H4000&
    Private Const WS_EX_LTRREADING = &H0&
    Private Const WS_EX_MDICHILD = &H40&
    Private Const WS_EX_NOACTIVATE = &H8000000
    Private Const WS_EX_NOINHERITLAYOUT = &H100000
    Private Const WS_EX_NOPARENTNOTIFY = &H4&
    Private Const WS_EX_RIGHT = &H1000&
    Private Const WS_EX_RIGHTSCROLLBAR = &H0&
    Private Const WS_EX_RTLREADING = &H2000&
    Private Const WS_EX_STATICEDGE = &H20000
    Private Const WS_EX_TOOLWINDOW = &H80&
    Private Const WS_EX_TOPMOST = &H8&
    Private Const WS_EX_TRANSPARENT = &H20&
    Private Const WS_EX_WINDOWEDGE = &H100&
    Private Const WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE Or WS_EX_CLIENTEDGE)
    Private Const WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE Or WS_EX_TOOLWINDOW Or WS_EX_TOPMOST)
      

  2.   

    To: uguess(uguess) 
        你的代码我试了!
        只能设置图标、
        不能点击实现最小、最大化???
      

  3.   

    easy!设置form属性
    BorderStyle属性不用动,还是sizablecontrolbox=false
    caption=""就行了!
      

  4.   

    To :fuxc(Michael) 
        你没有理解题意!!!!!!To :uguess(uguess) 
        没有办法像正常窗体一样停泊吗?
        而且,关闭按钮好象也没用!
      

  5.   

    你要做一个没有标题栏的窗口,同时又能停泊在任务栏里,是吗?
    我的方法确实可以,只要去掉标题栏里的文字、图标和控件(最大、最小、关闭按钮),标题栏就不显示了,但是窗体的行为还是跟borderstyle设置的一样,运行后任务栏会有对应窗体的停泊按钮,单击按钮可以实现窗体的最大、最小化
      

  6.   

    oh!Faint!各位还有没有更好的方法。高手们都睡着了吗?
    我要结帖子啦!uguess(uguess) 你的方法还算是符合题意的。
    不过我相信一定可以实现象正常窗体那样的!!!
    只是还没有找到而已!
      

  7.   

    To fuxc(Michael) 
        不要标题栏,不等于不要Caption。
        你的方法我又试了一遍,还是不行!
      

  8.   

    可以做到!!!
    看!!!
    第一步,先将BorderStyle设成NONE
    第二步,将窗口的ShowInTaskbar 设成Ture
    这样就可以了
      

  9.   

    这是因为每当将BorderStyle设成NONE是VB会将ShowInTaskbar设成Fales
    这时只要再将它设回来就可了:)你的程序就重新出现在标题栏里。
    你可以做三个按钮,分别为CMDCLOSE,CMDMIN,CMDMAX
    然后这样
    Private Sub CMDMIN_Click()
    Form1.WindowState = 1  '最小化
    End Sub
    Private Sub CMDCLOSE_Click()
    Unload Me '关闭
    End Sub
    Private CMDMAX_Click()
    Form1.WindowState = 2  '最大化
    End Sub
      

  10.   

    To :wgku(wgku) 
        你没有明白我的意思!
    是这样的!
    使该窗口在任务栏上有一个停泊按钮这没有问题!
    现在是
    左键点击一下该停泊按钮使窗体缩小到任务栏上,
    左键再点击一下该停泊按钮又使窗体恢复原来的大小!(不是最大化)
    所有操作都在任务栏的这个停泊按钮上!这样解释清楚了吗?
    各位高手再看一看?我请问你那三个按钮放在什么地方???
    我根本就不需要那三个按钮?
    BorderStyle设成NONE这是不变的!
    停泊按钮是在任务栏上的那个按钮!
    象你那样实现我懂!!!
      

  11.   

    to:uguess(uguess)
    你的代码运行后会出现什么效果,我怎么运行后什么都没有啊!
      

  12.   

    controlbox=false
    caption=""
    borderstyle=2
    TO:jackjack() 这么一来,你的问题就可以完全解决了,不用那么麻烦吧
      

  13.   

    这样从看相上也比你把borderstyle设为0好看多了,你有不同意见吗?
      

  14.   


      声明:1、用我的那段代码,需要:borderstyle=0 ;showintaskbar=true ;ICON 不为空。
            2、除了“关闭”无效外,其余完全和一般的窗体效果相同!
      

  15.   

    To :cornerxu(面) 
    我的问题很清楚那就是:: jackjack() (2002-1-17 9:47:01)  得0分 
    是这样的!
    使该窗口在任务栏上有一个停泊按钮这没有问题!
    现在是
    左键点击一下该停泊按钮使窗体缩小到任务栏上,
    左键再点击一下该停泊按钮又使窗体恢复原来的大小!(不是最大化)
    所有操作都在任务栏的这个停泊按钮上!这样解释清楚了吗?
    各位高手再看一看?
     
      

  16.   


    : jackjack() 完全符合你的要求!
      

  17.   

    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Const GWL_STYLE = (-16)
    Private Const WS_SYSMENU = &H80000Private Sub Form_Load()
        Dim lStyle As Long
        lStyle = GetWindowLong(hwnd, GWL_STYLE) Or WS_SYSMENU
        SetWindowLong hwnd, GWL_STYLE, lStyle
    End Sub
      

  18.   

    to :uguess(uguess) :
        不完全符合我的要求!
        你可以试一下:    左键点击一下该窗体的停泊按钮时,
        窗体根本没法缩小到任务栏上!!!就这一点!!!    是真的!!!
      

  19.   


     我在,我不知道你是如何写的,我这完全实现了你的要求!VB6+Win2000
      

  20.   

        左键点击一下该窗体的停泊按钮时,
        窗体根本没法缩小到任务栏上!!!就这一点!!!
        “这一点” 在我这确实不行啊!
        你写的代码Copy,属性照设!    我的是VB6+Win98(都是简体中文版)
        不骗你!
      

  21.   

       声明:1、用我的那段代码,需要:borderstyle=0 ;showintaskbar=true ;ICON 不为空。
            2、除了“关闭”无效外,其余完全和一般的窗体效果相同!
            3、如果你还不行,留EMAIL,我把我的可用的代码发给你! 
      

  22.   

    To :uguess(uguess)   
        你的代码没有任何问题,在2000下我测试过可以!
        在98下就不能点击缩小!确实这样!好吧!我把贴子结了吧!
        谢谢了!