16,473
社区成员
发帖
与我相关
我的任务
分享
void CSnooperApp::OnMakeTransparent( void )
{
if( !g____maketransparent )
{
CMakeTransparent *dlg = new CMakeTransparent();
dlg->Create( IDD_MAKE_TRANSPARENT, NULL );
dlg->ShowWindow( SW_SHOW );
}
else
{
HWND w0 = ::FindWindow( NULL, "Make transparent" );
if( w0 )
{
::SendMessage( w0, WM_CLOSE, 0, 0 );
}
}
}
//隐藏主窗口
void
CAssembly::OnHideMain( void )
{
showmainwindow( this, m_alreadyhide );
m_alreadyhide = !m_alreadyhide;
}
void
showmainwindow( CWnd *pWnd, int bshow )
{
::ShowWindow( g____MainFrame, bshow );
if( pWnd )
{
showintaskbar( pWnd->GetSafeHwnd(), !bshow );
}
}
//函数用途:更改一个窗口的图标并将其显示在任务栏、任务切换条、任务管理器里
//参数说明:
//hWnd 要改变图标的窗口句柄
//hLargeIcon 显示到任务切换条上的图标 32*32
//hSmallIcon 显示到除任务切换条之外的图标 16*16
//hIcon 显示的图标,32*32,在显示到任务切换条之外的其余地方时会被自动压缩成16*16的。
//注释:
//此函数对于模式对话框无能为力。
//如果HICON 为NULL,函数不改变窗口图标,但是将原有图标显示到任务栏、
// 任务切换条、任务管理器里。
//此函数是通过将窗口的父窗口指针置空来实现将图标显示到任务栏、任务切换条、
// 任务管理器里的,所以调用完成后,其父窗口指针不再可用。
BOOL SendWndIconToTaskbar(HWND hWnd,HICON hLargeIcon,HICON hSmallIcon);
BOOL SendWndIconToTaskbar(HWND hWnd,HICON hIcon);
BOOL CUIApp::SendWndIconToTaskbar(HWND hWnd,HICON hLargeIcon,HICON hSmallIcon)
{
BOOL ret = TRUE;
ASSERT(hWnd);
if(!::IsWindow(hWnd))
return FALSE;
//获取窗口指针
CWnd* pWnd;
pWnd = pWnd->FromHandle(hWnd);
ASSERT(pWnd);
if(!pWnd)
return FALSE;
//将父窗口设为NULL
if(pWnd->GetParent())
if(::SetWindowLong(hWnd,GWL_HWNDPARENT,NULL) == 0)
return FALSE;
if(!(pWnd->ModifyStyle(NULL,WS_OVERLAPPEDWINDOW)))
ret = FALSE;
//设置窗口图标
if(hLargeIcon && hSmallIcon)
{
pWnd->SetIcon(hSmallIcon,FALSE);
pWnd->SetIcon(hLargeIcon,TRUE);
}
return ret;
}
BOOL CUIApp::SendWndIconToTaskbar(HWND hWnd,HICON hIcon)
{
BOOL ret = TRUE;
ASSERT(hWnd);
if(!::IsWindow(hWnd))
return FALSE;
//获取窗口指针
CWnd* pWnd;
pWnd = pWnd->FromHandle(hWnd);
ASSERT(pWnd);
if(!pWnd)
return FALSE;
//将父窗口设为NULL
if(pWnd->GetParent())
if(::SetWindowLong(hWnd,GWL_HWNDPARENT,NULL) == 0)
return FALSE;
if(!(pWnd->ModifyStyle(NULL,WS_OVERLAPPEDWINDOW)))
ret = FALSE;
//设置窗口图标
pWnd->SetIcon(hIcon,TRUE);
pWnd->SetIcon(hIcon,FALSE);
return ret;
}
#ifndef __TASKBAR_H__
#define __TASKBAR_H__
#ifndef __ITaskbarList_INTERFACE_DEFINED__
#define __ITaskbarList_INTERFACE_DEFINED__
/* interface ITaskbarList */
/* [object][uuid] */
EXTERN_C const IID IID_ITaskbarList;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("56FDF342-FD6D-11d0-958A-006097C9A090")
ITaskbarList : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE HrInit( void) = 0;
virtual HRESULT STDMETHODCALLTYPE AddTab(
/* [in] */ HWND hwnd) = 0;
virtual HRESULT STDMETHODCALLTYPE DeleteTab(
/* [in] */ HWND hwnd) = 0;
virtual HRESULT STDMETHODCALLTYPE ActivateTab(
/* [in] */ HWND hwnd) = 0;
virtual HRESULT STDMETHODCALLTYPE SetActiveAlt(
/* [in] */ HWND hwnd) = 0;
};
#else /* C style interface */
typedef struct ITaskbarListVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ITaskbarList * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
ITaskbarList * This);
ULONG ( STDMETHODCALLTYPE *Release )(
ITaskbarList * This);
HRESULT ( STDMETHODCALLTYPE *HrInit )(
ITaskbarList * This);
HRESULT ( STDMETHODCALLTYPE *AddTab )(
ITaskbarList * This,
/* [in] */ HWND hwnd);
HRESULT ( STDMETHODCALLTYPE *DeleteTab )(
ITaskbarList * This,
/* [in] */ HWND hwnd);
HRESULT ( STDMETHODCALLTYPE *ActivateTab )(
ITaskbarList * This,
/* [in] */ HWND hwnd);
HRESULT ( STDMETHODCALLTYPE *SetActiveAlt )(
ITaskbarList * This,
/* [in] */ HWND hwnd);
END_INTERFACE
} ITaskbarListVtbl;
interface ITaskbarList
{
CONST_VTBL struct ITaskbarListVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ITaskbarList_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
#define ITaskbarList_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
#define ITaskbarList_Release(This) \
(This)->lpVtbl -> Release(This)
#define ITaskbarList_HrInit(This) \
(This)->lpVtbl -> HrInit(This)
#define ITaskbarList_AddTab(This,hwnd) \
(This)->lpVtbl -> AddTab(This,hwnd)
#define ITaskbarList_DeleteTab(This,hwnd) \
(This)->lpVtbl -> DeleteTab(This,hwnd)
#define ITaskbarList_ActivateTab(This,hwnd) \
(This)->lpVtbl -> ActivateTab(This,hwnd)
#define ITaskbarList_SetActiveAlt(This,hwnd) \
(This)->lpVtbl -> SetActiveAlt(This,hwnd)
#endif /* COBJMACROS */
#endif /* C style interface */
HRESULT STDMETHODCALLTYPE ITaskbarList_HrInit_Proxy(
ITaskbarList * This);
void __RPC_STUB ITaskbarList_HrInit_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskbarList_AddTab_Proxy(
ITaskbarList * This,
/* [in] */ HWND hwnd);
void __RPC_STUB ITaskbarList_AddTab_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskbarList_DeleteTab_Proxy(
ITaskbarList * This,
/* [in] */ HWND hwnd);
void __RPC_STUB ITaskbarList_DeleteTab_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskbarList_ActivateTab_Proxy(
ITaskbarList * This,
/* [in] */ HWND hwnd);
void __RPC_STUB ITaskbarList_ActivateTab_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskbarList_SetActiveAlt_Proxy(
ITaskbarList * This,
/* [in] */ HWND hwnd);
void __RPC_STUB ITaskbarList_SetActiveAlt_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
#endif /* __ITaskbarList_INTERFACE_DEFINED__ */
#ifndef __ITaskbarList2_INTERFACE_DEFINED__
#define __ITaskbarList2_INTERFACE_DEFINED__
/* interface ITaskbarList2 */
/* [object][uuid] */
EXTERN_C const IID IID_ITaskbarList2;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("602D4995-B13A-429b-A66E-1935E44F4317")
ITaskbarList2 : public ITaskbarList
{
public:
virtual HRESULT STDMETHODCALLTYPE MarkFullscreenWindow(
/* [in] */ HWND hwnd,
/* [in] */ BOOL fFullscreen) = 0;
};
#else /* C style interface */
typedef struct ITaskbarList2Vtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ITaskbarList2 * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
ITaskbarList2 * This);
ULONG ( STDMETHODCALLTYPE *Release )(
ITaskbarList2 * This);
HRESULT ( STDMETHODCALLTYPE *HrInit )(
ITaskbarList2 * This);
HRESULT ( STDMETHODCALLTYPE *AddTab )(
ITaskbarList2 * This,
/* [in] */ HWND hwnd);
HRESULT ( STDMETHODCALLTYPE *DeleteTab )(
ITaskbarList2 * This,
/* [in] */ HWND hwnd);
HRESULT ( STDMETHODCALLTYPE *ActivateTab )(
ITaskbarList2 * This,
/* [in] */ HWND hwnd);
HRESULT ( STDMETHODCALLTYPE *SetActiveAlt )(
ITaskbarList2 * This,
/* [in] */ HWND hwnd);
HRESULT ( STDMETHODCALLTYPE *MarkFullscreenWindow )(
ITaskbarList2 * This,
/* [in] */ HWND hwnd,
/* [in] */ BOOL fFullscreen);
END_INTERFACE
} ITaskbarList2Vtbl;
interface ITaskbarList2
{
CONST_VTBL struct ITaskbarList2Vtbl *lpVtbl;
};
#ifdef COBJMACROS
#define ITaskbarList2_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
#define ITaskbarList2_AddRef(This) \
(This)->lpVtbl -> AddRef(This)
#define ITaskbarList2_Release(This) \
(This)->lpVtbl -> Release(This)
#define ITaskbarList2_HrInit(This) \
(This)->lpVtbl -> HrInit(This)
#define ITaskbarList2_AddTab(This,hwnd) \
(This)->lpVtbl -> AddTab(This,hwnd)
#define ITaskbarList2_DeleteTab(This,hwnd) \
(This)->lpVtbl -> DeleteTab(This,hwnd)
#define ITaskbarList2_ActivateTab(This,hwnd) \
(This)->lpVtbl -> ActivateTab(This,hwnd)
#define ITaskbarList2_SetActiveAlt(This,hwnd) \
(This)->lpVtbl -> SetActiveAlt(This,hwnd)
#define ITaskbarList2_MarkFullscreenWindow(This,hwnd,fFullscreen) \
(This)->lpVtbl -> MarkFullscreenWindow(This,hwnd,fFullscreen)
#endif /* COBJMACROS */
#endif /* C style interface */
HRESULT STDMETHODCALLTYPE ITaskbarList2_MarkFullscreenWindow_Proxy(
ITaskbarList2 * This,
/* [in] */ HWND hwnd,
/* [in] */ BOOL fFullscreen);
void __RPC_STUB ITaskbarList2_MarkFullscreenWindow_Stub(
IRpcStubBuffer *This,
IRpcChannelBuffer *_pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD *_pdwStubPhase);
#endif /* __ITaskbarList2_INTERFACE_DEFINED__ */
#endif
//包含这个头文件。
void
showintaskbar( HWND hwnd, int bshow )
{
HRESULT hr;
ITaskbarList* pTaskbarList;
hr = CoCreateInstance( CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_ITaskbarList, ( void** )&pTaskbarList );
pTaskbarList->HrInit( );
if( bshow )
{
pTaskbarList->AddTab( hwnd );
}
else
{
pTaskbarList->DeleteTab( hwnd );
}
pTaskbarList->Release();
}