关于用API函数设置窗体样式遇到的问题
为何以下的代码,当用鼠标点击窗体的关闭按钮时,并不能关闭窗体?Private Sub Form_Load()
Dim lstyle As Long
lstyle = GetWindowLong(Me.hwnd, GWL_STYLE)
SetWindowLong Me.hwnd, GWL_STYLE, WS_CAPTION Or WS_SYSMENU
DrawMenuBar Me.hwnd
End Sub
可能改变了窗口默认处理程序里的消息处理方式。
因为在没有标题栏的样式里,那个X看都看不见,当然不会处理它的点击事件了。
我现在没有VB,没办法看代码啦~~~~ 补充一下。。。。。。没说完
如果你的窗体本身是WindowState=0的(也就是没标题栏的),然后用API设置了一个标题栏出来,就可能会有这种现象出现。
同时,你还可以试试用这个API把一个标签变成按钮,把一个文本框变成窗体。。。。。
但那只是外观上的改变。
如果想让实质也一起改变,就得把目标子类化,自己处理里面的消息了。
关于子类化,可以看看我发的那个“保护你的密码框”代码里的例子。 对,我的窗体本身是WindowState=0。请问马兄:如何在 WindowState=0的情况下,用API函数使窗体有标题栏和系统菜单,并且能用关闭按钮来关闭窗体?谢谢!
[此贴子已经被作者于2005-10-31 17:18:22编辑过] 回楼主:这个功能可能就得使用子类化技术了.
说白了也很简单,就是在子类过程里把"点击X的消息"取得,并自己向窗体发送一个关闭消息就行了.
其实系统自己也是这样处理的呀,只是我们平时看不到而已.
你可以用SPY++查看一下窗体的消息----------我现在刚从火坑里爬出来,没有电脑,只能给你这些参考,抱歉啦~~~~~ 谢谢马兄!请问:“用SPY++查看一下窗体的消息”中的“SPY++”是什么?在哪里可以找到API函数中的常量的中文意思? SPY++是一个工具,你要安装VS6.0才会有,只VB6.0好象没有的......
至于API常量的中文意思,我也不知道哪里可以找到.....不过MSDN里倒是有英文的意思....
抱个金山词霸应该不成问题 谢谢马兄!您能否就这个问题用子类化的方法做个示例出来,您发的那个“保护你的密码框”,到现在我还看不明白。 很抱歉我短时间内只能"纸上谈兵"了......现在没固定的电脑,什么也做不了的. 恳请马兄抽空做一个示例出来,让大家学习,谢谢! 没有问题!我这段时间忙完就会回到四川家乡,到时就有时间了.
到时我会专门发一个示例工程,并写一篇文章来对这个"子类化"作一个说明-----当然,只是我目前的理解.....
所以可能会写得有些乱.......
在论坛里帖的同时,也会发在我的BLOG里. 真是太感谢啦!这是我们的福音!
全球瞩目!万众期待! ............没那么夸张吧??? 因为经典,才值得期待!支持马兄!
页:
[1]