我做了一个托盘程序的对话框Demo,想一开始隐藏对话框,要怎样实现?

Sander 2005-06-06 04:37:43
我做了一个托盘程序的对话框Demo,想一开始隐藏对话框,要怎样实现?
...全文
221 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sander 2005-06-14
  • 打赏
  • 举报
回复
Thanks To younggle.
younggle 2005-06-14
  • 打赏
  • 举报
回复
有空帮你写一个程序。
QQ: 84162092
younggle 2005-06-14
  • 打赏
  • 举报
回复
有空帮你写一个程序。
zkxz 2005-06-14
  • 打赏
  • 举报
回复
我经常做这种托盘程序,小有心得,可以提供一点方法给楼主做参考。

新建工程时不用Dialog Base模版,而选SDI模版。生成工程后,将ChildView的相关代码都删掉。并在CYourApp::InitInstance()函数中把
pFrame->ShowWindow(SW_SHOW);
改为
pFrame->ShowWindow(SW_HIDE);
将CMainFrame文件的PreCreateWindow函数这样改:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.style = WS_POPUP;
cs.dwExStyle |= WS_EX_TOOLWINDOW;

return CFrameWnd::PreCreateWindow(cs);
}

之后,托盘图标的添加和销毁可以分别在CMainFrame::OnCreate和CMainFrame::OnDestory中来做。如果有对话框,就添加一个对话框类,在你的托盘图标事件中对该对话框进行处理就可以了。这样做,就不会出现程序启动时,窗口先闪一下再消失的情况了。
Sander 2005-06-14
  • 打赏
  • 举报
回复
我想,请教非模式的方法,能否详细一点,因为我认为用非模式不是程序退出了吗?
hushuangyan74 2005-06-09
  • 打赏
  • 举报
回复
大家讲得都有道理,多试试
moloto2004 2005-06-09
  • 打赏
  • 举报
回复
在InitDialog里直接MoveWindow 到屏幕外,要显示时再回来
humourHM 2005-06-07
  • 打赏
  • 举报
回复
我在这里列出上面写的一种比较好的方法吧。
设置对话框的visible属性为FALSE;
在CXXXXApp.h中加入:
CXXXXDlg *myDlg;
将m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);从构造函数中移到OnInitDialog函数中
在InitInstance函数中,进行修改如下:
{
……;//
myDlg=new CXXXXDlg;
m_pMainWnd=myDlg;
return myDlg->Creat(IDD_XXXX_DIALOG);
}
注意要在ExitInstance函数中通过delete来释放myDlg所指向的对象
humourHM 2005-06-07
  • 打赏
  • 举报
回复
在Visual C++.NET实践与提高—深入Windows编程 一书中讲述了4种初始时隐藏对话框的方案,你可以看看。
Sander 2005-06-07
  • 打赏
  • 举报
回复
各位,如果用非摸态的,程序不是退出了吗
cranley 2005-06-07
  • 打赏
  • 举报
回复
用一个变量CRECT,保存当前,再MOVEWINODW(x,y,0,0)大小为零。可达到看不见的效果。不知可行否?
kugou123 2005-06-07
  • 打赏
  • 举报
回复
把你的对话框由模态对话框改成非模态的,不用DoModal,而是Create即可。
Sander 2005-06-06
  • 打赏
  • 举报
回复
我不是每次都要隐藏呀,难道要加一个flag吗?
idAnts 2005-06-06
  • 打赏
  • 举报
回复

SHOWWINDOWS(WM_HIDE);
放在OnPaint里。
皮皮鲁 2005-06-06
  • 打赏
  • 举报
回复
flyhigh(一不小心) ( ) 说的没错
因为InitInstance()返回的是TRUE,所以并不会退出程序

如果用在对话框中的OnInitDialog()函数中调用SHOWWINDOWS(WM_HIDE),对话框的界面会闪烁一下,然后消失,行为并不好


Sander 2005-06-06
  • 打赏
  • 举报
回复
To:airhand(暴风雨)
我知道这个ShowWindow(WM_HIDE);可以隐藏,但这个放在什么地方,才能达到,程序一开始运行,就隐藏。

TO:flyhigh(一不小心)
这样就回立即退出程序了呀。如果不用
CPDMDlg 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
}
flyhigh 2005-06-06
  • 打赏
  • 举报
回复
CYourDialog *pDlg=NULL;
BOOL YourApp::InitInstance()
{
pDlg=new CYourDialog;
pDlg->Create(CYouDialog::IDD,NULL);
return TRUE; // remeber
}

void YourApp::ExitInstance()
{
pDlg->DestroyWindow();
delete pDlg;
}

去掉对话框模中中的Visible属性
airhand 2005-06-06
  • 打赏
  • 举报
回复
SHOWWINDOWS(WM_HIDE);

16,551

社区成员

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

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

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