程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 也談如何隱藏顯示在任務欄中的對話框程序

也談如何隱藏顯示在任務欄中的對話框程序

編輯:關於VC++

介紹

在 VCKBASE Online Journal 第21期中,NorthTibet 寫了“如何隱藏顯示在任務欄中的對話框程序”一文,頗為巧妙,而且非常好用,唯一不爽的是有點麻煩。踩在他的肩膀上,我找到了一個比較簡單的方法。

實現

隱藏這個Main Dialog的思路就是把這個Dialog看成一個子窗口,然後再把WS_EX_APPWINDOW屬性去掉。

WS_EX_APPWINDOW不大常用,MSDN的解釋是:

Forces a top-level window onto the taskbar when the window is visible.

把頂層的並且可見的窗口放到任務欄上,移除 WS_EX_APPWINDOW 很容易:

ModifyStyleEx(WS_EX_APPWINDOW, 0);

就可以了。

那麼什麼辦法能夠最簡單的實現創建一個父窗口呢?CFrameWnd 就有點笨了,干脆就用自己好了。在

BOOL CHideApp::InitInstance()中:

CHideDlg dlgParent;
  dlgParent.Create(IDD_HIDE_DIALOG);
  dlgParent.ShowWindow(SW_HIDE);
  //dlgParent.ShowWindow(SW_SHOW);
  CHideDlg dlg(&dlgParent);

  m_pMainWnd = &dlg;
  int nResponse = dlg.DoModal();

  dlgParent.DestroyWindow();

在BOOL CHideDlg::OnInitDialog()中:

this->ModifyStyleEx(WS_EX_APPWINDOW, 0);

只短短幾行,就實現了對話框在任務欄的隱藏。

結束語

如果使用 CDialog 的話,ALT+TAB 圖標就不對了:) 之前我也試過用 CWnd,可恨的是它還要去注冊窗口類,相比之下還是CHideDlg 最經濟,你說呢?祝大家身體健康,每天都有新發現!

E-Mail : [email protected] QQ : 923452

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved