怎样把一个窗口总放在最前面?

why168 2003-11-01 09:36:59
我看到有很多程序都有一个选项,把窗口放在最前面;比如WINAMP 就有“总在最前面”的这个选项,他是怎样做到的呢?
...全文
287 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdnzhu 2003-11-01
  • 打赏
  • 举报
回复
(2)****************************************************
函 数 名: PutFormOnTop
函数功 能:决定窗口是否在最上面
参 数1:是否要放在最上面的窗口的指针,一般在调用窗口里输入this即可以,或者输入其它窗口
参 数2:如果要置在最上面,请输入TRUE,否则输入FALSE。
返回值:如果成功返回TRUE,否则返回FALSE
属于的类:
成员类型:
示 例:

******************************************************
BOOL PutFormOnTop(CWnd *pWnd,BOOL IfTop)
{
if (pWnd==NULL)
return FALSE;

if (IfTop==TRUE)
{
ASSERT_VALID(pWnd);
pWnd->SetWindowPos(&(pWnd->wndTopMost),0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
return TRUE;
}
else if(IfTop==FALSE)
{
ASSERT_VALID(pWnd);
pWnd->SetWindowPos(&(pWnd->wndNoTopMost),0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
return TRUE;
}

return FALSE;
}
aachenG 2003-11-01
  • 打赏
  • 举报
回复
Sorry,一下手快粘贴错代码了!:)
luofeitarget 2003-11-01
  • 打赏
  • 举报
回复
DWORD sty=GetExStyle();
CMenu *hmenu;
hmenu=GetMenu();
if(sty&WS_EX_TOPMOST)
{
SetWindowPos(&wndNoTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);
hmenu->CheckMenuItem(IDM_TOP,MF_UNCHECKED);
}
else
{
SetWindowPos(&wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);
hmenu->CheckMenuItem(IDM_TOP,MF_CHECKED);
}
vcforever 2003-11-01
  • 打赏
  • 举报
回复
你可以设置一个bool标志来控制是否让窗体总在最前如:
bool m_bAlwaysTop;
if(m_bAlwaysTop)
SetWindowPos(&wndTopMost,......);
else
SetWindowPos(&wndNoTopMost,......)
就可以了!

祝你成功!
aachenG 2003-11-01
  • 打赏
  • 举报
回复
ModifyStyleEx( WS_EX_APPWINDOW, WS_EX_TOOLWINDOW );
rainbowinfog 2003-11-01
  • 打赏
  • 举报
回复
SetWindowPos(hDlg,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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