方法一:这种方法实际上是利用COM提供的ITaskbarList接口来实现的,在这里写个函数来完成这项工作
BOOL ShowInTaskbar(HWND hWnd, BOOL bShow)
{
if (!SUCCEEDED(CoInitialize(NULL)))
return FALSE;
HRESULT hr;
ITaskbarList* pTaskbarList;
hr = CoCreateInstance( CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER,
IID_ITaskbarList, (void**)&pTaskbarList );
if(SUCCEEDED(hr))
{
pTaskbarList->HrInit();
if(bShow)
pTaskbarList->AddTab(hWnd);
else
pTaskbarList->DeleteTab(hWnd);
pTaskbarList->Release();
// 卸载不用的COM服务.
CoFreeUnusedLibraries();
return TRUE;
}
// 卸载不用的COM服务.
CoFreeUnusedLibraries();
return FALSE;
}
方法二:在主对话框domodal之前生成一个隐藏的对话框
BOOL CTestDlgApp::InitInstance()
{
...
CFrameWnd a; //生成一个框架窗口对象
a.Create(NULL,"aa");//生成窗口,不带ws_visible,也就是说不会显示出来
CTestDlgDlg dlg;
m_pMainWnd = &a;//将这个隐藏窗口设为主窗口
int nResponse = dlg.DoModal();
...
}
CFrameWnd是关键
方法三:移除对话框WS_EX_APPWINDOW风格,但是影响风格
在对话框的oninitdialog里加入
ModifyStyleEx(WS_EX_APPWINDOW,0);
本文链接:https://www.it72.com/9443.htm