大家知道一般程序生成的窗口都会在任务栏上创建一个按钮,在这个按钮上右击可以弹出sysmenu,而如果用鼠标左键单击任务栏按钮,则窗口会最小化,再点一下任务栏按钮则窗口又恢复到桌面显示。
但如用以下(Delphi)代码修改窗口的一些属性后,就失去了以上特性!请问如何恢复!SetWindowLong(Self.Handle,GWL_STYLE,GetWindowLong(Self.Handle, GWL_STYLE) and Not WS_THICKFRAME and not WS_DLGFRAME and not WS_BORDER );强调一下:
我所谓的“失去的特性”是指:
用了以上代码后,鼠标左键单击窗口在任务栏里相应的按钮无法使窗口最小化。
但如用以下(Delphi)代码修改窗口的一些属性后,就失去了以上特性!请问如何恢复!SetWindowLong(Self.Handle,GWL_STYLE,GetWindowLong(Self.Handle, GWL_STYLE) and Not WS_THICKFRAME and not WS_DLGFRAME and not WS_BORDER );强调一下:
我所谓的“失去的特性”是指:
用了以上代码后,鼠标左键单击窗口在任务栏里相应的按钮无法使窗口最小化。
解决方案 »
- sendmessage怎么传送消息让另一个窗体执行自定义的某个函数呢?
- TWebBrowser中怎么获取选中或则单击图片的URL地址呢?
- VB代码转换成Delphi代码
- delphi2005的帮助阿,让人看了直想骂。
- exe能像dll一样导出函数么?
- package使用问题
- 用了NMUDP构件就不能关机怎么办?急!!!
- 帮我看一下这段程序缩小为任务条右下角的小图标的代码
- 如何在MEMO1中读取STRINGGRID被选择的数据?(或者提供一个类似 Tstringgrid 但又比它好的控件)
- 鼠标移动到某按钮(假设会发亮),如果用WM_MOUSEMOVE怎么实现?
- 怎样在调试程序时关闭那该死的cpu窗口,回答后马上给分,我在线等待
- 寻求Delphi下IntraWeb开发资料(中文版)!!!多谢大家!!!
求其他方法~ 但还是谢谢wyj1974的回答~
SetWindowLong(Self.Handle,GWL_STYLE,GetWindowLong(Self.Handle, GWL_STYLE) and WS_THICKFRAME and WS_DLGFRAME and WS_BORDER );
哈哈,恢复了问题就不存在了!我也不必来问了~To sysu(死树):
你是在 Delphi 里面试的吧。
Delphi 中确实可以,因为 Delphi 生成的窗口在任务栏里的按钮不是Form创建的而是TApplication 创建的!
上面这段代码不要放在 delphi 或 bcb 中试,因为看不到问题,除非去掉 application 生成的任务栏按钮并用 FORM 的代替! 代码放在 vb 或 vc 中试都可以发先问题!
上面的代码不过是两个 Api 的调用啊~ 稍微改改那里都能用的!
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
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;