SDI窗口弹出模式窗口在任务栏的反映
主窗口是一个SDI窗口,当弹出一个模式窗口时,如果不加任何处理,在Windows任务栏里表现为应用程序为非活动状态。在VB里没找到相关方法处理这种界面异常,于是API了。
一般情况下(这一点在Windows经典主题下非常抢眼),应用程序处于活动状态,应用程序在任务栏上的按钮处于选中状态,Windows经典主题下就是白色凹下的按钮,非活动状态就是一个凸起的按钮。
比如,如果在IE中 工具->选项 ,会弹出IE的选项窗口,该窗口是一个模式窗口。点击IE有任栏里的按钮,切换到非活动状态,再点击任务栏按钮,则切换回活动状态。
在弹出的模式窗口的Load过程中写上,SetWindowPos me.hwnd,HWND_TOP,nLeft,nTop,nWidth,nHeight, SWP_NOACTIVATE
貌似解决了这个问题。
但是,如果当弹出一个模式窗口后,应用点击程序在任务栏上的按钮,又产生了不和谐:应用程序不能切换回活动状态。
如何排除这种不和谐?
[解决办法]
在MFC里创建一个基于对话框的工程,可以弹出一个“关于对话框”,组建后运行。然后用SPY++检测主对话框样式和“关于对话框”的窗口样式。再在VB里,将通过SPY++得到的窗口样式抄到相应的VB主对话框和弹出对话框(就是SetWindowLong hwnd,GWL_STYLE,lStyle),但还是没解决问题。
这是一个细节问题。在MFC里,一个DoModal()可以解决的问题,在VB里想尽办法也不做到?还是我的思路有问题?Word,IE,金山毒霸的弹出对话框都SPY++过,全部照抄样式都没用。看来要上MSDN要查CDialog类。看到MSDN就晕,经常一看就看半夜,往往看完了还是一头雾水。
:)在异想天开,想自已搞一个有点特色的界面框架,用窗口模拟菜单已经实现了,就“弹出窗口”这一关卡住了.见笑了。
[解决办法]
或许在VB里做不到,因为VB向导生成的工程也没有实现。谁来up下,不然40分就浪费了
[解决办法]
该回复于2010-12-10 13:19:13被版主删除
[解决办法]
我也有此烦恼啊?兄弟你现在解决了没有?
[解决办法]
没有,现在改用MFC了