**************************************************************************
被问题困扰数月,多方求教,怎奈何程序太平洋内外,VB情报局上下,菜鸟茫茫,大都不明白问题,还胡乱作答,哎~
无奈,只好来CSDN开个“聚英堂”,恳请大侠们现身说法。
**************************************************************************
问题如下:大家知道一般程序生成的窗口都会在任务栏上创建一个按钮,在这个按钮上右击可以弹出sysmenu,而如果用鼠标左键单击任务栏按钮,则窗口会最小化,再点一下任务栏按钮则窗口又恢复到桌面显示。
但如用以下(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
'-------------------------------------------------------------------------
强调一下:
我所谓的“失去的特性”是指:
用了以上代码后,鼠标左键单击窗口在任务栏里相应的按钮无法使窗口最小化。
被问题困扰数月,多方求教,怎奈何程序太平洋内外,VB情报局上下,菜鸟茫茫,大都不明白问题,还胡乱作答,哎~
无奈,只好来CSDN开个“聚英堂”,恳请大侠们现身说法。
**************************************************************************
问题如下:大家知道一般程序生成的窗口都会在任务栏上创建一个按钮,在这个按钮上右击可以弹出sysmenu,而如果用鼠标左键单击任务栏按钮,则窗口会最小化,再点一下任务栏按钮则窗口又恢复到桌面显示。
但如用以下(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
'-------------------------------------------------------------------------
强调一下:
我所谓的“失去的特性”是指:
用了以上代码后,鼠标左键单击窗口在任务栏里相应的按钮无法使窗口最小化。
解决方案 »
- vb如何实现批量检测超链接
- 在ColorDialog对话框显示时,能不能只显示“基本颜色”这一项,其他项都不显示出来?
- VB读取数据库里的图片信息问题。。
- 高分请教菜鸟问题,急,在线等。。。。。
- 关于打包安装的问题。请高手解答!
- 关于InstallShield中解数据包的问题!!!!
- vb and DLL
- 简单问题!Webbrowser控件 谁用过在那里加?还有程序中怎么打开如“http://www.csdn.net”的页?
- 请问我的参与分有什么用,能转化成可用分吗?
- 怎样作出OICQ的系统热键功能(在没有焦点的情况下,按特定的键使程序得到焦点)?
- 如何实现两个COMBO控件的数据互为查询条件
- 高手请进:用VB做B/S结构的OA,请各位提提建议!
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)
End Sub
'-------------------------------------------------------------------------
用这段就可解决问题.
实际上这段代码没什么用,因为直接在Form里设置相应属性,就可得到你要的效果.
请问你要的效果是什么?
hehe.......
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 = &HC00000
Const WS_SYSMENU = &H80000
Const WS_THICKFRAME = &H40000
Const WS_SIZEBOX = WS_THICKFRAME
Const WS_OVERLAPPED = &H0&
Const WS_TILED = WS_OVERLAPPED
Const WS_MINIMIZEBOX = &H20000
Const WS_MAXIMIZEBOX = &H10000
Const WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX)
Const WS_TILEDWINDOW = WS_OVERLAPPEDWINDOWPrivate Sub Form_Load()
Form1.WindowState = 1
SetWindowLong Me.hwnd, GWL_STYLE, GetWindowLong(Me.hwnd, GWL_STYLE) And Not (WS_OVERLAPPEDWINDOW)
End Sub-----------------------------------------
这样就再2000下失效了,反向设置就可以解除。
getwindowlong 后保存原来的窗体信息,再用 setwindowlong 设回去不就成了?我真的不明白你要干吗
看看这个帖子就明白了: http://www.5ivb.net/club/dispbbs.asp?boardID=1&ID=13250
-------------------------------
海纳百川,有容乃大;
壁立千仞,无欲则刚。