C++-MFC(4)-rebbion界面风格-全屏及响应键盘消息的退出-VS2019-实例源码
VS2019 MFC界面一般有三种风格,MFC、VS、Rebbion。上图。是在"创建项目"-"样式选择"中设定。本文讲了一下rebbion的基本操作,并实现了一个全屏和退出的功能。
1.三种效果图
2.rebbion操作
3.全屏和响应键盘的退出
1.三种效果图
MFC 单文档、VS、rebbion
全屏及退出效果图
2.rebbion操作
2.1新建项目->样式选择
2.2添加rebbion 或者ribbon修改。资源里添加 类别->面板->按钮
2.3.添加按钮响应事件
3.全屏和响应键盘的退出
3.1 添加变量 写全屏和退出函数
头文件中定义 CRect m_FullScreenRect;
CMenu* m_menuMainWnd;
.CPP中写实现代码:
void CMainFrame::OnButton_fullscreen()
{
m_wndRibbonBar.ShowWindow(SW_HIDE);//隐藏工具栏
m_wndStatusBar.ShowWindow(SW_HIDE);//隐藏状态栏
m_menuMainWnd = GetMenu();
//隐藏菜单栏
SetMenu(NULL);
// 保存以前的位置信息
GetWindowRect(&m_FullScreenRect);
// 去除主窗口的标题
LONG style = ::GetWindowLong(m_hWnd, GWL_STYLE);
style &= ~WS_CAPTION;
::SetWindowLong(m_hWnd, GWL_STYLE, style);
// 使客户区无边框
ModifyStyleEx(WS_EX_CLIENTEDGE, 0, SWP_FRAMECHANGED);
ModifyStyleEx(WS_EX_CLIENTEDGE, NULL);
//得到当前系统的分辨率
int screenx = GetSystemMetrics(SM_CXSCREEN);
int screeny = GetSystemMetrics(SM_CYSCREEN);
// 全屏显示
SetWindowPos(NULL, 0, 0, screenx, screeny, SWP_NOZORDER);
style = ::GetWindowLong(this->m_hWnd, GWL_STYLE);
}
void CMainFrame::OnButton_fulloff()
{
LONG style = ::GetWindowLong(m_hWnd, GWL_STYLE);
style |= WS_CAPTION;
::SetWindowLong(m_hWnd, GWL_STYLE, style);
//如果需要,显示工具栏
m_wndRibbonBar.ShowWindow(SW_SHOW);
//如果需要,显示状态栏
m_wndStatusBar.ShowWindow(SW_SHOW);
//恢复窗口以前的大小
MoveWindow(&m_FullScreenRect);
//恢复菜单栏
this->SetMenu(m_menuMainWnd);
}
3.2退出全屏,键盘响应消息的实现
3.2.1添加preTranslateMessage 函数
右击类属性->选择类向导
生成preTranslateMessage函数
3.2.2编写preTranslateMessage 函数
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN)
{
//switch (pMsg->wParam)
{
OnButton_fulloff();
MessageBox(_T("退出全屏"));
return TRUE;
}
}
return CFrameWndEx::PreTranslateMessage(pMsg);
}