FORMSHOW中设置窗体样式WS_EX_TOOLWINDOW无效

liangcb 商泰汽车软件有限公司 开发测试工程师  2014-09-24 09:44:08
代码
DWORD dwStyle = ::GetWindowLong(this->Handle, GWL_EXSTYLE);
dwStyle = dwStyle | WS_EX_TOOLWINDOW;
::SetWindowLong(this->Handle, GWL_EXSTYLE, dwStyle );
放在窗体FORM的FORMSHOW事件中的,并且事件响应函数中还设置了窗体最大化和STAYONTOP样式。
但是程序运行以后,最大化和STAYONTOP的效果是有了,但是程序的图标还在任务栏上。
但是将设置WS_EX_TOOLWINDOW样式的代码放到FORMCREATE中,问题就好了,图标从任务栏中消失了。
不知道这个是什么原因导致的呢,而且我用SPY++在程序运行后查看过窗体属性中的样式,室友WS_EX_TOOLWINDOW这个样式的。
...全文
162 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangcb 2014-09-28
看来有些样式还真的是窗体SHOW出来以后就不好改了,这个样式我看MSDN的帮助是也看到实在CreateWindow里面设置的。
回复
ccrun.com 2014-09-26
尽量不要在OnShow事件中调用SetWindowLong,放在构造函数中即可。
回复
ccrun.com 2014-09-25
在OnShow和OnHide事件中不能更改窗体的可视状态,你可以在窗体的构造函数或OnCreate事件中来处理。
回复
liangcb 2014-09-25
那是不是意味着在FormShow中不能使用SetWindowLong改变样式了
回复
发动态
发帖子
Windows SDK/API
创建于2007-08-02

1202

社区成员

C++ Builder Windows SDK/API
申请成为版主
社区公告
暂无公告