您的位置:首页 > 编程语言 > PHP开发

基于对话框的MFC PocketPC应用程序全屏方法

2009-06-20 23:44 441 查看
基于对话框的MFC PocketPC应用程序全屏方法

1.需要将整个窗口向上平移26个像素以到达屏幕顶部,同时使用SHFullScreen()函数隐藏任务栏;

在OnInitDialog()函数中添加如下语句:

RECT rc;

GetWindowRect(&rc);

rc.top-=26;

MoveWindow(rc.left,rc.top,rc.right,rc.bottom,FALSE); //上移26像素

SHFullScreen(this->m_hWnd,SHFS_HIDETASKBAR); //隐藏任务栏

2.防止使用Input Panel时任务栏出现;

说明,依据MSDN,在Input Panel活动时会发送WM_SETTING_CHANGE和WM_ACTIVATE两个消息。需要手工接管两个消息的处理保持全屏。

MFC类中,CDialog类由CWnd类直接派生,所以这里可以直接手工添加函数。

在主程序的对话框类*Dlg.h头文件中这个位置,加入这两项(声明这两个函数):

// Implementation

protected:

HICON m_hIcon;

// Generated message map functions

//{{AFX_MSG(CFullScreenDialogDlg)

virtual BOOL OnInitDialog();

virtual void OnSettingChange(); =====================================>1

afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized); =========>2

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

在主程序的对话框类*Dlg.cpp实现文件中做如下修改:

(1)在消息映射处加入

BEGIN_MESSAGE_MAP(CFullScreenDialogDlg, CDialog)

//{{AFX_MSG_MAP(CFullScreenDialogDlg)

ON_WM_SETTINGCHANGE() ========================================>1

ON_WM_ACTIVATE() ============================================>2

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

手工添加这两个函数:

void CFullScreenDialogDlg::OnSettingChange()

{

}

void CFullScreenDialogDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)

{

CWnd::OnActivate(nState, pWndOther, bMinimized); //注意这里从CWnd继承

SHFullScreen( this->m_hWnd, SHFS_HIDETASKBAR);

}

经过这样的修改,无论是使用Input Panel,还是热键运行其他程序后返回,都能够保持全屏。

附加:

如果有开发者希望屏蔽按下Esc和Enter键的退出,还需要添加这个PreTranslateMessage函数

BOOL CFullScreenDialogDlg::preTranslateMessage(MSG* pMsg)

{

if(pMsg->message==WM_KEYDOWN)

{

if(pMSg->wParam==VK_RETURN) return TRUE; //回车键

if(pMsg->wParam==VK_ESCAPE) return TRUE;

}

return CDialog::preTranslateMessage(pMsg);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: