|
在WM_ACTIVATE/WA_ACTIVE时隐藏SIP, 在其它WM_ACTIVATE时显示SIP,
你看下WTL里, atlwince.h里CFullScreenFrame::OnActivate就知道了, 该代码如下
- ///////////////////////////////////////////////////////////////////////////////
- // CFullScreenFrame - full screen frame implementation
- template
- class CFullScreenFrame
- {
- public:
- bool m_bFullScreen;
- CFullScreenFrame() : m_bFullScreen(false)
- { }
- // Operation
- void SetFullScreen(bool bFull)
- {
- m_bFullScreen = bFull;
- ShowTaskBar(!bFull, false);
- ShowMenuBar(!bFull);
- }
- // Manage TaskBar for modal dialogs and property sheets
- template
- int FSDoModal(D& dlg)
- {
- T* pT = static_cast(this);
- pT; // avoid level 4 warning
- ATLASSERT(pT->IsWindow());
- if (m_bFullScreen) // Show taskbar if hidden
- ShowTaskBar(true, false);
- int iRet = dlg.DoModal();
- if (m_bFullScreen) // Hide taskbar if restored
- ShowTaskBar(false);
- return iRet;
- }
- // Implementation
- void ShowMenuBar(bool bShow)
- {
- T* pT = static_cast(this);
- ATLASSERT(pT->IsWindow());
- ATL::CWindow MenuBar = pT->m_hWndCECommandBar;
- ATLASSERT(MenuBar.IsWindow());
- MenuBar.ShowWindow(bShow ? SW_SHOWNORMAL : SW_HIDE);
- pT->SizeToMenuBar();
- }
-
- void ShowTaskBar(bool bShow, bool bRepaint = true)
- {
- T* pT = static_cast(this);
- ATLASSERT(pT->IsWindow());
- RECT rect = { 0 };
- SystemParametersInfo(SPI_GETWORKAREA, NULL, &rect, FALSE);
- if (!bShow)
- rect.top = 0;
- #ifdef WIN32_PLATFORM_PSPC // Pocket PC code
- UINT uShow = t_bHasSip ? SHFS_SHOWTASKBAR | SHFS_SHOWSIPBUTTON : SHFS_SHOWTASKBAR | SHFS_HIDESIPBUTTON;
- SHFullScreen(pT->m_hWnd, bShow ? uShow : SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON);
- #elif _WIN32_WCE > 0x500 // Smartphone 2005 code
- SHFullScreen(pT->m_hWnd, bShow ? SHFS_SHOWTASKBAR : SHFS_HIDETASKBAR);
- #else // Smartphone 2003
- HWND hTaskBar = FindWindow(_T("tray"), NULL);
- ATLASSERT(::IsWindow(hTaskBar));
- ::ShowWindow(hTaskBar, bShow ? SW_SHOW : SW_HIDE);
- #endif // WIN32_PLATFORM_PSPC
- pT->MoveWindow(&rect, bRepaint);
- }
- // Message map and handler
- BEGIN_MSG_MAP(CFullScreenFrame)
- MESSAGE_HANDLER(WM_SETTINGCHANGE, OnSettingChange)
- MESSAGE_HANDLER(WM_ACTIVATE, OnActivate)
- END_MSG_MAP()
- LRESULT OnSettingChange(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled)
- {
- #ifndef SETTINGCHANGE_RESET // not defined for PPC 2002
- #define SETTINGCHANGE_RESET SPI_SETWORKAREA
- #endif
- if (m_bFullScreen && (wParam & SETTINGCHANGE_RESET))
- SetFullScreen(m_bFullScreen);
- return bHandled = FALSE;
- }
- LRESULT OnActivate(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled)
- {
- if (m_bFullScreen)
- {
- ShowTaskBar(!wParam);
- ShowMenuBar(!wParam);
- }
- return bHandled = FALSE;
- }
- };
复制代码 |
|