我的窗口用ShowWindow(SW_HIDE)隐藏,如何访止别的程序用ShowWindow(hWnd,SW_SHOW)把我的窗口给显示?

解决方案 »

  1.   

    // 试试下面的, WinAPI ::ShowWindow(HWND, UINT)拦不住就拦绘图消息
    // 不知道行不行
    窗口设一个bool m_bActive;
    自己处理WM_PAINT, WM_NCPAINT 判断一下就可以
    CMyDialog::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
      if(message == WM_NCPAINT || message == WM_PAINT)
      {
        if(!m_bActive)
          return 1;
      }
      return CDialog::WindowProc(message, wParam, lParam);
    }
    // 下面这个函数为方便使用
    CMyDialog::ShowWindow(int nCmd)
    {
      if(nCmd == SW_SHOW || nCmd == SW_SHOWMAXMIZED || ... )
        m_bActive = true;
      else if(nCmd == SW_HIDE || nCmd == SW_MINIMIZE)
        m_bActive = false;
      CDialog::ShowWindow(nCmd);
    }
      

  2.   

    OnShowWindow()
    {
      if(IsMyAPP)
        showwindow
      else
        return
    }
      

  3.   

    只能是处理WM_SHOWWINDOW消息,在其中判断消息发送者是不是本身。
      

  4.   

    PostMessage(WM_SIZE,0,0);
    CPaintDC dc(this);
    SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);