是不是不起作用的窗口没有WS_EX_TOPMOST风格?
解决方案 »
- 注册表里面的内容,哪些类型是大小写敏感的,哪些是不敏感的?
- 为什么DirectX的很多函数在MSDN中找不到
- 有高人能否给个思路:
- 写完用ATL生成的exe服务DCOM程序后,除了通过运行程序注册之外,还怎么注册呢?
- 郁闷我好几天的图象处理问题...
- 关于Rar文件解压和压缩进度的问题。
- 消息处理函数中如何把消息参数 wParam 转换为 CString ?
- 求命,十万火急,如何用ODBC API 调用存储过程,请专家帮我看看错在声么地方?100分相送
- 如何通过点击一个按扭来改变另一个按扭的颜色,颜色rgb值在text中指定
- 【分享】一个类似 VS2005 属性表的窗口类(含源码)
- updatebatch()的问题
- 新手求助:关于VFW视频采集后图像处理的问题
这样你看它还跑不跑
::SetWindowPos(AfxGetApp()->m_pMainWnd->m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_SHOWWINDOW|SWP_NOMOVE|SWP_NOSIZE);
else
::SetWindowPos(AfxGetMainWnd()->m_hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_SHOWWINDOW|SWP_NOMOVE|SWP_NOSIZE);
可这种问题只是一个界面的问题应该不会牵涉到太多参数,跟界面相关的代码我几乎都考虑过了。
你们没有遇到过类似问题吗?
我同事也有遇到同样的问题,我有点怀疑是我们共用的开发包的问题了...
1、主窗口为PropertySheet,上面添加两个PropertyPage,无任何控件,在PropertySheet中用::SetWindowPos(m_hWnd, HWND_TOPMOST, x, y, WIDTH, HEIGHT, SWP_SHOWWINDOW)设置窗口位于最顶层显示,可以实现,不会被其它窗口挡住。
2、主窗口为Dialog,上面只有一个ListCtrl控件,用::SetWindowPos(m_hWnd, HWND_TOPMOST, x, y, WIDTH, HEIGHT, SWP_SHOWWINDOW),设置窗口位于最顶层显示,可以实现,不会被其它窗口挡住。
3、主窗口为PropertySheet,上面添加两个PropertyPage,每个PropertyPage上都只有一个ListCtrl控件,在PropertySheet中用::SetWindowPos(m_hWnd, HWND_TOPMOST, x, y, WIDTH, HEIGHT, SWP_SHOWWINDOW)设置窗口位于最顶层显示,这时就出问题了!!!一点旁边窗口,这个窗口就掉下去了!不能保持在顶层!这个算是微软的Bug吗?欢迎大家来讨论一下。
(顺便说一下,我的工作环境是:WinXP下,用Evc编程,程序在WinCE Emulator上运行。)
PropertySheet还可以考虑用Tab Control替代掉,但子窗口这个ListCtrl又是不得不用的。
解决不了,无奈了......
HWND hParent;wbile(NULL!=(hParent=GetParent(hTop))
{
hTop=hParent;
}
::SetWindowPos(hTop, HWND_TOPMOST, ...
你说不是ListCtrl控件的问题,我的证明方法很简单,去掉ListCtrl控件就能置顶了,点哪儿都不会掉下去。
我做过试验,新工程,主对话框点按钮,弹出子对话框,只在上面加了一个ListCtrl控件,什么代码都没加,设置TOPMOST就是不行,去了ListCtrl就行了。这还不能说明问题吗?
当时的失效原因是我在字窗体show之后调用SetWindowPos就无效
换到show之前调用SetWindowPos就好了
CWnd *pTopDlg = FindWindow(_T("HHTaskBar"),NULL);
if (pTopDlg != NULL)
{
pTopDlg->ShowWindow(SW_HIDE);
}
不过退出的时候记得给SHOW 回来.