创建没有任务栏图标的应用程序






4.69/5 (21投票s)
创建一个不显示在 Windows 任务栏中的主窗口的简单方法
我第一次看到这种技术是在 Mike Blaszczak 的 'stealth' 程序中。
有时希望应用程序窗口不显示在任务栏中。例如,您的应用程序可能驻留在系统托盘中,由于它已经有一个系统托盘图标,因此在任务栏中拥有额外的图标是不必要的重复。创建不会在任务栏中显示图标的窗口的简单方法是创建一个单独的不可见窗口,并让该不可见窗口成为您应用程序窗口的父窗口。
这样做的方法,并且仍然允许您的应用程序窗口保持可见,是在您的应用程序的 PreCreateWindow
重载中将不可见窗口设置为父窗口。
首先,在您的主框架类中声明一个窗口成员变量
class CMainFrame : public CFrameWnd { ... protected: CWnd m_wndInvisible; ...
然后重载 CMainFrame::PreCreateWindow
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if (!CFrameWnd::PreCreateWindow(cs)) return FALSE; // Create invisible window if (!::IsWindow(m_wndInvisible.m_hWnd)) { LPCTSTR pstrOwnerClass = AfxRegisterWndClass(0); if (!m_wndInvisible.CreateEx(0, pstrOwnerClass, _T(""), WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, 0)) return FALSE; } cs.hwndParent = m_wndInvisible.m_hWnd; return TRUE; }
就是这样!当主应用程序关闭时,不可见窗口将自动销毁。