我看还是在初始化中加入代码,用ShowWindow 函数

解决方案 »

  1.   

    我尝试在InitInstance中加代码,可是问题是:在DoModal()前加是不对的-窗口还没有呢。在DoModal()之后就更不行了,那时候在等待用户的动作。
    哪位高手,快指点一下
      

  2.   

    你的思路不正确DoModal()执行的是模式对话框,你控制它的显示、隐藏有意义吗?最好把对话框以无模式执行,这样控制它的显隐才有意义
      

  3.   

    刚才的贴子作废在InitDialog()里用ShowWindow(...),然后启动热键的时候用ShowWindow()最后如果是热键启动方式的话,还要处理OnClose()处理:屏蔽CDialog::Close(),并用ShowWindow()隐藏窗口
      

  4.   

    I think you should add your codes before DoModal(). 
    Before DoModal(), your instance must have been created or declared. as:
    CMyDialog m_MyDialog;
    if(...)
    {
    m_MyDialog.DoModal();
    }
    or you can put the first declaration into the calling class's InitInstance(), OnCreate(), or Contructor.
      

  5.   

    我的一个程序是这么实现的。(有模式的)
    在OnInitDialog ()中
    if (NeedMinimize ())  // 读注册表看是否需要隐藏
    PostMessage(WM_SIZE, SIZE_MINIMIZED, 0);  // 发送最小化消息在OnSize ()中

    CDialog::OnSize(nType, cx, cy);

    if (SIZE_MINIMIZED == nType)
    {
    HideMe (); // Hide to system tray
    }

    本代码在我的一个工具中实现,不过启动是会闪烁一下。
      

  6.   

    一个思路:不需要显示时在对话框的OnPaint中执行ShowWindow(SW_HIDE);,
      

  7.   

    To:Smile_Tiger
    “在InitDialog()里用ShowWindow(...),然后启动热键的时候用ShowWindow()……”。不好用的,对话框依旧出现。To:zhaijunlong
    是个对话框程序,只有一个窗体。
      

  8.   

    To:antwork 你的方法不错的,我改了一下--在OnInitDialog中
    PostMessage(WM_SHOWWINDOW, FALSE, SW_OTHERUNZOOM);