如何让对话框一创建就隐藏? 我想让我的对话框程序开始运行后初始状态是隐藏的,应该如何做?是重载PreCreateWindow还是Create? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 处理WM_CREATE消息,在mfc中也就是PreCreateWindow中 我重载了OnShowWindow,然后使用ShowWindow函数和UpdateWindow函数,为何指定其他的譬如SW_MAXIMIZE都可以,但是我如果用ShowWindow(SW_HIDE)却没用? 同意clife(空谷的松籁) 在PreCreateWindow中处理 可是WindowStyle里面只有WS_VISIBLE,没有让窗口隐藏的Style啊! 如何有效地使初始窗口不显示;当我们想让窗口初始时不显示时,通常会用ShowWindow(SW_HIDE) ,但实际上还是在启动是可以看到窗口一闪而过的痕迹。所以,可以使用下面的方法来实现它:(1.1)先在构造函数中设置布乐变量 visible值为false. visible = false;(1.2)重载 WM_WINDOWPOSCHANGING,并添加下面代码:void CTest_deleteDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) { if(!visible) lpwndpos->flags &= ~SWP_SHOWWINDOW; CDialog::OnWindowPosChanging(lpwndpos);}(1.3)然后设布尔visible变量值为true,并在要显示窗口时,再用ShowWindow(SW_SHOW)既可。visible = true;ShowWindow(SW_SHOW); to NewFree(新自由人):你的方法不行啊,程序出错。 我都用在我的具体项目中了,当然可以,而且不仅对话框,Doc/View模式也可以呀!把你出错的提示贴出来! 对于Dialog的隐藏——方法一要到void CMyTrayDlg::OnPaint()函数中加一句 //CMyTrayDlg你的对话框类AfxGetMainWnd()->ShowWindow(SW_HIDE);就可以了,不过这种方法总是会存在程序一闪而过的现象。方法二使用移动程序界面出可视区域的办法 在对话框类(CXXXXDlg)的初始化函数InitInstance()中加入 //移动对话框到不可见区域 this->MoveWindow(-500,-500,100,100,true); //设置对话框属性,使其不在任务栏上显示 SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE, WS_EX_TOOLWINDOW|WS_EX_STATICEDGE); UpdateWindow(); SubItemHitTest和OnMouseMove问题 急!!!!VC下水晶报表的报错误! 如何用CArray实现多维数组 具体应该如何修改CA10View 华为子公司惠通真的学不到东西吗? DCOM服务启动先后问题(高手请进) //如何改变CListCtrl得背景色? 对dll存放的位置有什么要求? 小问题一个,搞了半天没弄出来 VC程序员如何单干,挣钱? 小问题,100分:用SetCursorPos时,光标处的窗口能否收到WM_MOUSEMOVE?? 如何获取进程此时占用CPU时间
在PreCreateWindow中处理
可以使用下面的方法来实现它:
(1.1)先在构造函数中设置布乐变量 visible值为false. visible = false;
(1.2)重载 WM_WINDOWPOSCHANGING,并添加下面代码:
void CTest_deleteDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
if(!visible)
lpwndpos->flags &= ~SWP_SHOWWINDOW; CDialog::OnWindowPosChanging(lpwndpos);
}(1.3)然后设布尔visible变量值为true,并在要显示窗口时,再用ShowWindow(SW_SHOW)既可。visible = true;
ShowWindow(SW_SHOW);
你的方法不行啊,程序出错。