SDI窗口弹出模式窗口在任务栏的反映

trickglom 2010-12-03 03:42:59

  主窗口是一个SDI窗口,当弹出一个模式窗口时,如果不加任何处理,在Windows任务栏里表现为应用程序为非活动状态。在VB里没找到相关方法处理这种界面异常,于是API了。
  一般情况下(这一点在Windows经典主题下非常抢眼),应用程序处于活动状态,应用程序在任务栏上的按钮处于选中状态,Windows经典主题下就是白色凹下的按钮,非活动状态就是一个凸起的按钮。
  比如,如果在IE中 工具->选项 ,会弹出IE的选项窗口,该窗口是一个模式窗口。点击IE有任栏里的按钮,切换到非活动状态,再点击任务栏按钮,则切换回活动状态。

  在弹出的模式窗口的Load过程中写上,SetWindowPos me.hwnd,HWND_TOP,nLeft,nTop,nWidth,nHeight, SWP_NOACTIVATE
  貌似解决了这个问题。
  但是,如果当弹出一个模式窗口后,应用点击程序在任务栏上的按钮,又产生了不和谐:应用程序不能切换回活动状态。
  如何排除这种不和谐?
  
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
trickglom 2011-09-15
  • 打赏
  • 举报
回复
没有,现在改用MFC了
penguinhzf 2011-09-13
  • 打赏
  • 举报
回复
我也有此烦恼啊?兄弟你现在解决了没有?
trickglom 2010-12-10
  • 打赏
  • 举报
回复
或许在VB里做不到,因为VB向导生成的工程也没有实现。谁来up下,不然40分就浪费了
trickglom 2010-12-04
  • 打赏
  • 举报
回复
  在MFC里创建一个基于对话框的工程,可以弹出一个“关于对话框”,组建后运行。然后用SPY++检测主对话框样式和“关于对话框”的窗口样式。再在VB里,将通过SPY++得到的窗口样式抄到相应的VB主对话框和弹出对话框(就是SetWindowLong hwnd,GWL_STYLE,lStyle),但还是没解决问题。
   这是一个细节问题。在MFC里,一个DoModal()可以解决的问题,在VB里想尽办法也不做到?还是我的思路有问题?Word,IE,金山毒霸的弹出对话框都SPY++过,全部照抄样式都没用。看来要上MSDN要查CDialog类。看到MSDN就晕,经常一看就看半夜,往往看完了还是一头雾水。
  :)在异想天开,想自已搞一个有点特色的界面框架,用窗口模拟菜单已经实现了,就“弹出窗口”这一关卡住了.见笑了。

1,486

社区成员

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

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