最新回复
在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;
}
};
复制代码
详情
回复
发表于 2009-7-12 18:05
| |
|
|
| |
|
|
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
EEWorld Datasheet 技术支持
EEWorld订阅号
EEWorld服务号
汽车开发圈
机器人开发圈