FORMSHOW中设置窗体样式WS_EX_TOOLWINDOW无效

梁诚斌 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这个样式的。
...全文
343 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
梁诚斌 2014-09-28
  • 打赏
  • 举报
回复
看来有些样式还真的是窗体SHOW出来以后就不好改了,这个样式我看MSDN的帮助是也看到实在CreateWindow里面设置的。
ccrun.com 2014-09-26
  • 打赏
  • 举报
回复
尽量不要在OnShow事件中调用SetWindowLong,放在构造函数中即可。
ccrun.com 2014-09-25
  • 打赏
  • 举报
回复
在OnShow和OnHide事件中不能更改窗体的可视状态,你可以在窗体的构造函数或OnCreate事件中来处理。
梁诚斌 2014-09-25
  • 打赏
  • 举报
回复
那是不是意味着在FormShow中不能使用SetWindowLong改变样式了

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧