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

14 篇文章 0 订阅

上次正好要做一个类似只有菜单一样的程序,当然需要把显示在任务栏上的隐藏起来。

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

第一、创建对话框时必须将它作为某个不可见框架窗口的子窗口;
第二、这个不可见窗口的扩展式样必须设置 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
}

注意:对话框的扩展式样必须关闭,此方法在切换程序时候,还可以看到,以后在慢慢改进。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值