如何让一个基于对话框的程序一启动就处于隐藏状态?

certbuggy 2003-10-15 06:15:19
应该在哪里添加ShowWindows(handle,SW_HIDE);这段代码呢?
...全文
43 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
LuckFox 2003-10-16
  • 打赏
  • 举报
回复
响应OnWindowPosChanging消息!用别的方面很难做到!!

void CLogDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{

if(!Visible)
lpwndpos->flags &= ~SWP_SHOWWINDOW;

CDialog::OnWindowPosChanging(lpwndpos);
}
zhucde 2003-10-16
  • 打赏
  • 举报
回复
在OnInitDialog里应该写AfxGetMainWnd->ShowWindow(SW_HIDE)
bcpl 2003-10-16
  • 打赏
  • 举报
回复
去掉visible还要用
http://expert.csdn.net/Expert/topic/2246/2246356.xml?temp=.9268762里我说的办法,经过测试的
timepalette 2003-10-16
  • 打赏
  • 举报
回复
wuxfBrave(升星了,休息休息):
怎么去掉visible属性啊?
对话框程序的主对话框,我从属性里去掉visible属性怎么不行啊?窗口还是照显不误
wuxfBrave 2003-10-16
  • 打赏
  • 举报
回复
去掉visible属性最直接了
timepalette 2003-10-15
  • 打赏
  • 举报
回复
下面是我从近十余种 方法中选中的方法,因为别的方法或多或少都有些缺点。

①在类定义中加入 CWnd m_wndParent;
②在类的OnCreate中
// 创建一个隐藏的父窗口
if (m_wndParent.m_hWnd==NULL)
{
LPCTSTR pszOwnerClass=AfxRegisterWndClass(0);
m_wndParent.CreateEx(0, pszOwnerClass, _T(""),
WS_POPUP,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL, 0);
}
// 继承父窗口的属性
SetParent(&m_wndParent);

下面是一个例子,程序运行时隐藏,5秒后显示窗口(定时器触发)

http://go.6to23.com/irisgreen/release/HideWindowDemo.rar
bcpl 2003-10-15
  • 打赏
  • 举报
回复
1. 去掉对话框的visible属性
2. 参考http://expert.csdn.net/Expert/topic/2246/2246356.xml?temp=.9268762
vcforever 2003-10-15
  • 打赏
  • 举报
回复
同意一楼的方法:
SetWindowPos(wndNoTopMost,0,0,0,0,SWP_HIDEWINDOW);
ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);

补充:
BOOL SetWindowPos(
const CWnd* pWndInsertAfter,//窗口在Z轴上的位置wndNoTopmost表示此窗口在所有的窗口的后面(Z轴)
int x,//窗口的左上角的X坐标
int y,//窗口左上角的Y坐标
int cx,//窗口的宽度
int cy,//窗口的高度
UINT nFlags //标志位SWP_HIDEWINDOW表示隐藏这个窗口
);

BOOL ModifyStyleEx(
DWORD dwRemove,//要删除的窗口的风格
DWORD dwAdd,//要设置的新的窗口的风格
UINT nFlags = 0 //标志位可以取默认值
);


pale 2003-10-15
  • 打赏
  • 举报
回复
具体为什么我也不是很清楚
好像是那个语句必须写在OnPaint()函数里
而且即使这样,我的试验结果是对话框是看不见了,可在任务栏里还留下了一个痕迹,它只隐藏了窗体
certbuggy 2003-10-15
  • 打赏
  • 举报
回复
谢谢pale,可是为什么我在OnInitDialog里写ShowWindow(SW_HIDE)就不好用呀?
smallcrocodile 2003-10-15
  • 打赏
  • 举报
回复
支持楼上!
xiaohyy 2003-10-15
  • 打赏
  • 举报
回复
直接把visible属性去掉就可以了。
pale 2003-10-15
  • 打赏
  • 举报
回复
别用那个
这样

在OnInitDialog()
里面写

SetWindowPos(&CWnd::wndNoTopMost,0,0,0,0,SWP_HIDEWINDOW);
ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);

就可以了!

15,979

社区成员

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

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