后来想到了用COM来解决:
在 CYourApp::InitInstance()里加上
::CoInitialize( NULL );
在 CYourApp::ExitInstance()里加上
::CoUninitialize();
下面是实现:(在你的程序里调用就可以了)
-
HRESULT hr;
ITaskbarList * pTaskbarList;
hr = CoCreateInstance( CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER,
IID_ITaskbarList, ( void ** ) & pTaskbarList );
if ( SUCCEEDED( hr ) )
{
pTaskbarList -> HrInit( );
pTaskbarList -> DeleteTab( hWnd ); // hWnd为你要去掉按钮的窗口句柄
}
经试验,直接在程序初始化时调用无效,可以将代码放到OnBtnClick函数中,便能实现删除任务栏按钮,并使对话框正常显示的作用
其他方法请参见 http://blog.csdn.net/dreamon_xq/archive/2009/08/04/4406266.aspx