1。即设置WS_EX_TOOLWINDOW去除WS_EX_APPWINDOW。这种方式网上多的很。虽然也能实现,但是效果不好,窗体的标题栏变得很小,很那看,自己重画标题栏时也会有问题。
2.动态删除,详见 http://blog.csdn.net/dreamon_xq/archive/2009/07/13/4344515.aspx,这种方法开始可以实现,但是如果再次show窗体。任务栏里的东东就又出来了。
3.使显示窗口成为某个隐藏窗体的子窗口。网上也有一些,说的不是很清楚。
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;
cs.lpszClass = AfxRegisterWndClass(0);
return TRUE;
}
代码中自己手动创建了,一个CWnd对象,并把它作为窗口的父窗口。粗体字部分是必要的。其中pstrOwnerClass可以是任何已知窗体类的名字,比如说Button等。