• VC++实现程序全屏显示


    全屏显示在许多应用程序中都得到了应用。实现此功能的原理很简单:CWnd类中MoveWindow()函数可以按照指定参数来显示窗口。在执行窗口最大化以前利用GetWindowPlacement()函数先把窗口的当前位置保存在一个变量中,执行窗口最大化后可以通过SetWindowPlacement()函数调用此变量来恢复窗口。利用RepositionBars()函数取得应用程序客户区不被工具条掩盖的大小,GetWindowRect()函数取得应用程序窗口的大小,根据两者之间的关系和屏幕分辨率的尺寸来确定MoveWindow()函数的参数以达到屏幕最大化。
    实现步骤如下:
    (1)    利用VC6.0的AppWizard创建一个应用程序。
    创建一个单文档SDI应用程序,项目名为FullScreen。
    (2)    利用资源编辑器在主菜单中增加一个菜单项。
    在“编辑(E)”菜单下添加一个名为“全屏”的菜单,ID号为IDM_FULLSCREEN。
    (3)    利用ClassWizard为新菜单项添加对应的消息映射函数。
    进入ClassWizard,选择Message Maps选项卡,在class name下拉列表框中选择CMainFrame,在Object Ids列表框中选择IDM_FULLSCREEN,在message列表框中双击COMMAND,单击OK按钮。
    (4)    在CMainFrame类中增加以下变量:
    WINDOWPLACEMENT prePlacement;
    CRect m_FSRect;
    BOOL m_bFullScreen;
    (5)    在消息映射函数中添加如下代码:
    void CMainFrame::OnFullscreen()
    {
    // TODO: Add your command handler code here
    GetWindowPlacement(&prePlacement);
    CRect m_RectOfCurrentWindow,m_RectOfClient;
    GetWindowRect(&m_RectOfCurrentWindow);
    RepositionBars(0,0xffff,AFX_IDW_PANE_FIRST,reposQuery,&m_RectOfClient);
    ClientToScreen(&m_RectOfClient);
    int nFullWidth = GetSystemMetrics(SM_CXSCREEN);
    int nFullHeight = GetSystemMetrics(SM_CYSCREEN);
    m_FSRect.left = m_RectOfCurrentWindow.left-m_RectOfClient.left;
    m_FSRect.top = m_RectOfCurrentWindow.top - m_RectOfClient.top;
    m_FSRect.right = m_RectOfCurrentWindow.right - m_RectOfClient.right+nFullWidth;
    m_FSRect.bottom = m_RectOfCurrentWindow.bottom - m_RectOfClient.bottom + nFullHeight;
    m_bFullScreen = TRUE;
    MoveWindow(&m_FSRect,TRUE);
    }
    (6)    对CMainFrame类进行Add Windows Message Handler操作,弹出消息选择对话框,对WM_GETMINMAXINFO消息添加消息响应函数。其实现代码如下:
    void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
    {
    // TODO: Add your message handler code here and/or call default
    lpMMI->ptMaxTrackSize.x = 2*GetSystemMetrics(SM_CXSCREEN);
    lpMMI->ptMaxTrackSize.y = 2*GetSystemMetrics(SM_CYSCREEN);
    CFrameWnd::OnGetMinMaxInfo(lpMMI);
    }
    (7)    通过Project->Add To Project->Components And Controls菜单利用Gallery加入右键等善后处理,不再介绍。
    这样一个具有全屏显示的应用程序就诞生了。
  • 相关阅读:
    windows x64 软件约定
    windows 64位 系统非HOOK方式监控进程创建
    win 64 ring0 inline hook
    win 64 Shadow ssdt hook
    win 64 SSDT HOOK
    win 64 文件操作
    win64 驱动内存基本操作
    windbg符号表问题
    Windows 64位驱动编程基础与win64 ssdt
    基础知识
  • 原文地址:https://www.cnblogs.com/mfryf/p/2348085.html
Copyright © 2020-2023  润新知