大家知道一般程序生成的窗口都会在任务栏上创建一个按钮,在这个按钮上右击可以弹出sysmenu,而如果用鼠标左键单击任务栏按钮,则窗口会最小化,再点一下任务栏按钮则窗口又恢复到桌面显示。
    
   但如用以下(Delphi)代码修改窗口的一些属性后,就失去了以上特性!请问如何恢复!SetWindowLong(Self.Handle,GWL_STYLE,GetWindowLong(Self.Handle, GWL_STYLE) and Not WS_THICKFRAME and not WS_DLGFRAME and not WS_BORDER );强调一下:   
 我所谓的“失去的特性”是指:
 用了以上代码后,鼠标左键单击窗口在任务栏里相应的按钮无法使窗口最小化。

解决方案 »

  1.   

    以上SetWindowLong里的所有参数都是必用的,不然窗口风格达不到相应的效果!
    求其他方法~   但还是谢谢wyj1974的回答~
      

  2.   

    把窗体属性恢复到原来
    SetWindowLong(Self.Handle,GWL_STYLE,GetWindowLong(Self.Handle, GWL_STYLE) and  WS_THICKFRAME and WS_DLGFRAME and WS_BORDER );
      

  3.   

    To d983074(d983074):
       哈哈,恢复了问题就不存在了!我也不必来问了~To sysu(死树):
       你是在 Delphi 里面试的吧。
       Delphi 中确实可以,因为 Delphi 生成的窗口在任务栏里的按钮不是Form创建的而是TApplication 创建的!
      

  4.   

    各位兄弟~  
        上面这段代码不要放在 delphi 或 bcb 中试,因为看不到问题,除非去掉 application 生成的任务栏按钮并用 FORM 的代替!   代码放在 vb 或 vc 中试都可以发先问题!
      

  5.   

    ?????????TempterX(兄弟)说的不在delphi里运行是什么意思?在C里运行?还是运行单独的EXE?  我怎么用了也好用?我是在DLL中用的,很好用呀??
      

  6.   

    To myling(阿德): 都说了不要在Delphi和bcb中使用了~ 你竟然不明白~  晕~ -_-
     上面的代码不过是两个 Api 的调用啊~ 稍微改改那里都能用的!
      

  7.   

    是不是 delphi封装的这个API和原来的有差别?
      

  8.   

    下面是效果相同的VB代码,在VB里一试就明白了!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
    Const GWL_STYLE = (-16)
    Const WS_CAPTION = &HC00000Private Sub Form_Load()
    Form1.WindowState = 1
    SetWindowLong Me.hwnd, GWL_STYLE, GetWindowLong(Me.hwnd, GWL_STYLE) And Not WS_CAPTION
    End Sub
      

  9.   

    在formcreate中让程序不显示在任务栏:
      SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);//hide window from task bar
    最小化窗口:
      Application.Minimize;
      ShowWindow(Application.Handle,SW_HIDE);
    恢复窗口:
            ShowWindow(Application.Handle,SW_SHOW);
            Application.Restore;
            Application.BringToFront;
      

  10.   

    To tonylk(tony) :   感谢你的回答。但是强烈希望回答前看看问题,谢谢。