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);
}
posted @ 2019-11-14 18:57  jasmineTang  阅读(168)  评论(0)    收藏  举报