如何使dialog-based App 的MainDlg,再开始的时候不show出来?

qevan 2002-03-09 06:58:05
需要在哪个事件中添加什么代码?
...全文
53 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
qevan 2002-03-14
  • 打赏
  • 举报
回复
那这样的话,就不能让这个函数运行结束?
这样其他消息这么获得??
game2000 2002-03-13
  • 打赏
  • 举报
回复
你再试试,这个方法没有问题的,我以前用这个方法写过好几个程序了
你肯定是直接注释掉了那几句,但是注释掉以后你的相应代码要写在这个
函数里,或者在这里调用其它的函数,这个函数执行完,程序就退出,这是
由vc的运行机理决定的

CDemoApp::InitInstance()
{
...
CTestDlg dlg;
m_pMainWnd = &dlg;

//在这里写你的代码

}
game2000 2002-03-12
  • 打赏
  • 举报
回复
显示在屏幕外的话,窗口还是会在任务栏上显示
gameboy999 2002-03-12
  • 打赏
  • 举报
回复
注释掉的话,窗体的initDlg就不会被触发,可能有问题
还不如把窗体Show在屏幕可视范围之外呢...呵呵
game2000 2002-03-12
  • 打赏
  • 举报
回复
你是不是说的这个意思?如果你不想显示那个窗口,象下面那样把那些
注释掉就可以了



MainDlg的显示是在你的app类的InitInstance里如:
CDemoApp::InitInstance()
{
...
CTestDlg dlg;
m_pMainWnd = &dlg;
//int nResponse = dlg.DoModal(); //用来显示窗口的
//if (nResponse == IDOK)
//{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
//}
//else if (nResponse == IDCANCEL)
//{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
...
}
qevan 2002-03-12
  • 打赏
  • 举报
回复
那怎么办,我的意思是这样的:
一个程序运行时,只是在任务栏里加个trayIcon,像"金山防火墙",或是"realplayer tray";
加托盘不成问题,问题就在如何使maindlg,刚开始的时候不show出来
qevan 2002-03-12
  • 打赏
  • 举报
回复
wrong, 这样会使程序立即结束,
again
qevan 2002-03-12
  • 打赏
  • 举报
回复
ok,再试试先,若可以则加分
game2000 2002-03-12
  • 打赏
  • 举报
回复
你就用我说的那个方法,把那几行注释掉,就不显示窗口了,
任务栏里也不会显示,如果你不放托盘的话,就什么都不显示

CDemoApp::InitInstance()
{
...
CTestDlg dlg;
m_pMainWnd = &dlg;
//int nResponse = dlg.DoModal(); //用来显示窗口的
//if (nResponse == IDOK)
//{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
//}
//else if (nResponse == IDCANCEL)
//{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
seahorse 2002-03-11
  • 打赏
  • 举报
回复
是不是放了个RichEdit?
需要调用一个函数初始化,记不清了,在csdn可以查到
qevan 2002-03-11
  • 打赏
  • 举报
回复
不行,再看看有没有其他办法。。
qevan 2002-03-09
  • 打赏
  • 举报
回复
: ma811(马头 说的似乎有理,我试试
ma811 2002-03-09
  • 打赏
  • 举报
回复
在app头文件中声明CDialog* m_pDlg;
在Ininstance()中
{
m_pDlg = new CDialog;
m_pDlg->Create(NULL, IDD);
m_pDlg->ShowWindow(0);//不要Show出来

return 0; //Must return 0;
}
JerryGR 2002-03-09
  • 打赏
  • 举报
回复
虽然我没有试过,但从理论上讲是这样的!你最好试一下,并将答案放在这里,供大家参考!:)
qevan 2002-03-09
  • 打赏
  • 举报
回复
我的意思是"在开始",

楼上说的有理,但如果PostMessage(....);
会不会出现这种情况: dialog闪一下,然后没了??

HeroRose 2002-03-09
  • 打赏
  • 举报
回复
不能很好的理解你的意思,“再开始?”还是“在开始”呢?
1、如果你仅仅想在开始的时候窗体就隐藏的话,在OnInitDilaog()中添加ShowWindow(SW_HIDE)是不能工作的,因为基于对话框的程序默认的情况下是首先显示窗体。所以你要隐藏,必须用在OnInitDilaog中添加PostMessage(WM_HIDWWINDW);WM_HIDEWINDOW是你自己定义的消息,在消息WM_HIDEWINDOW的消息处理函数中ShowWindow(SW_HIDE);
2.你想要自己的程序再开始的时候不show,也就是仅仅是一个程序实例在运行.你可以在你的APP类的InitInstance()创建CMutex ,它这个对象能保证唯一的程序实例的存在.
FlyCom_NT 2002-03-09
  • 打赏
  • 举报
回复
SW_HIDE
lithe 2002-03-09
  • 打赏
  • 举报
回复
MainDlg的显示是在你的app类的InitInstance里如:
CDemoApp::InitInstance()
{
...
CTestDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
...
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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