您的位置:首页 > 其它

隐藏显示在任务栏中的对话框程序

2008-01-16 21:49 323 查看
上次正好要做一个类似只有菜单一样的程序,当然需要把显示在任务栏上的隐藏起来。

查了下资料,下面三步,用的别人的话

第一、创建对话框时必须将它作为某个不可见框架窗口的子窗口;
第二、这个不可见窗口的扩展式样必须设置 WS_EX_TOOLWINDOW;
第三、保证对话框的扩展式样没有设置 WS_EX_APPWINDOW;

我总结出有两部就ok。

代码如下:


BOOL CSSO_AGentApp::InitInstance()




...{


INITCOMMONCONTROLSEX InitCtrls;


InitCtrls.dwSize = sizeof(InitCtrls);




InitCtrls.dwICC = ICC_WIN95_CLASSES;


InitCommonControlsEx(&InitCtrls);




CWinApp::InitInstance();




AfxEnableControlContainer();




SetRegistryKey(_T("SSO AGent"));






//创建对话框时,把它作为不可见主框架窗口的子窗口对待


CSSO_AGentDlg dlgParent;


dlgParent.Create(IDD_SSO_AGENT_DIALOG);


dlgParent.ShowWindow(SW_HIDE);


CSSO_AGentDlg dlg(&dlgParent);


m_pMainWnd = &dlg;


dlg.DoModal();


dlgParent.DestroyWindow();


return FALSE;


}

上面那部分改写一下就ok了。


BOOL CSSO_AGentDlg::OnInitDialog()




...{


CDialog::OnInitDialog();




// 将“关于...”菜单项添加到系统菜单中。




// 去掉注释设置对话框的 WS_EX_APPWINDOW 扩展式样


this->ModifyStyleEx(WS_EX_APPWINDOW,0);






// IDM_ABOUTBOX 必须在系统命令范围内。


ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);


ASSERT(IDM_ABOUTBOX < 0xF000);




CMenu* pSysMenu = GetSystemMenu(FALSE);


if (pSysMenu != NULL)




...{


CString strAboutMenu;


strAboutMenu.LoadString(IDS_ABOUTBOX);


if (!strAboutMenu.IsEmpty())




...{


pSysMenu->AppendMenu(MF_SEPARATOR);


pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);


}


}




// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动


// 执行此操作


SetIcon(m_hIcon, TRUE); // 设置大图标


SetIcon(m_hIcon, FALSE); // 设置小图标




// TODO: 在此添加额外的初始化代码






/**////////////////////自己的代码////////////////////////////




return TRUE; // 除非将焦点设置到控件,否则返回 TRUE


}

注意:对话框的扩展式样必须关闭,此方法在切换程序时候,还可以看到,以后在慢慢改进。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: