弹出窗体如何永远在父窗体之上?(急)

chengtao999 2010-08-31 02:52:09
类似桌面网游中弹出 “包裹”或“技能” 的窗体。不会在windows的任务栏出现,出现后一直处于父窗口之上,不影响父窗体执行其他操作。
...全文
100 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengtao999 2010-08-31
  • 打赏
  • 举报
回复
CXXDlg *g_pDlg = NULL;
void CDialog2Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
g_pDlg = new CXXDlg();
g_pDlg->Create(IDD_CHILD_DLG, (CWnd*)this);
g_pDlg->ShowWindow(SW_SHOW);
}

我自己无语了,我前面Create的第二个参数被我弄成了(CWnd*)this->m_hWnd.真是莫大的悲剧。

jacky_qiu提供的东西很有用,又学习了
jacky_qiu 2010-08-31
  • 打赏
  • 举报
回复
(1)//工具栏窗口,在任务栏上没有程序显示,
//去掉WS_EX_APPWINDOW 添加WS_EX_TOOLWINDOW
::SetWindowLong(m_hWnd,GWL_EXSTYLE,GetWindowLong(m_hWnd,GWL_EXSTYLE)&~WS_EX_APPWINDOW|WS_EX_TOOLWINDOW);

(2) 如果需要子窗口永远在父窗口上面,而又处于游离状态(就像程序的工具栏),需要设置子窗口的owner为父窗口
SetOwner()。这样这个窗口哦哭也就不会在任务栏上出现了。楼说说的非模态对话框就是这种情况。

(3) 估计你问的是第二种情况。这里有篇关于窗口分析的文章写得很好,有时间看一下。
http://blog.csdn.net/guogangj/archive/2008/12/06/3460267.aspx

阿弥陀佛!
龙哥依旧 2010-08-31
  • 打赏
  • 举报
回复
修改为toolwindow属性
chengtao999 2010-08-31
  • 打赏
  • 举报
回复
ShowWindow也会在任务栏出现
真相重于对错 2010-08-31
  • 打赏
  • 举报
回复
msdn 查 非模式对话框

15,979

社区成员

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

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