MFC 让对话框不显示在任务栏和桌面

 ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);//从任务栏中去掉.
  SetWindowPos(&wndTop,0,0,0,0,NULL);

或者

 

ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);//从任务栏中去掉.


  WINDOWPLACEMENT wp;
  wp.length=sizeof(WINDOWPLACEMENT);
  wp.flags=WPF_RESTORETOMAXIMIZED;
  wp.showCmd=SW_HIDE;
  SetWindowPlacement(&wp);



在IE版本为4.0以上的系统中有一个叫ITaskbarList的接口,故名思义,这个接口可用来控制任务栏上的按钮是否显示,你只要给出一个窗口的句柄和是否显示,完全不需考虑上面那此乱七八糟的规则.

代码:

void ShowInTaskbar(HWND m_hWnd,BOOL bshow)
{
 //在app的InitInstance中加入::CoInitialize(NULL);
 HRESULT hr;
 ITaskbarList *pTaskbarList;

 hr=CoCreateInstance(CLSID_TaskbarList,NULL,CLSCTX_INPROC_SERVER,
   IID_ITaskbarList,(void**)&pTaskbarList);
 
 pTaskbarList->HrInit();//MSDN中说在使用这个接口的其它方法之前得调用这个方法以便做一些初始化动作,我发现不调用这个方法也可以的.
 if(bshow){
  pTaskbarList->AddTab(m_hWnd);
 }
 else{
  pTaskbarList->DeleteTab(m_hWnd);
 }
 pTaskbarList->Release();
 //在app的ExitInstance中加入::CoUninitialize();

}

在需要的时候调用这个函数就可以了,第一个参数为窗口的句柄,第二个参数指明是在任务栏上是否显示按钮.

备注:这种方法功能强大,使用也较为简便,不过低版本的windows可能不支持.

来源:http://blog.csdn.net/ponydph/article/details/1350623

你可能感兴趣的:(Windows编程)