⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vc++界面设计小技巧.txt

📁 本文为VC++界面设计的一些小技巧
💻 TXT
字号:

    在MFC加入"这是什么?"的帮助提示
<br>MFC在CPropertySheet中封装了属性,但不支持标题的"这是什么?"帮助提示.函数
<br>CPropertySheet::OnNcCreate()屏蔽了扩展风格WS_EX_CONTEXTHELP, 因此,即使
<br>你在构造函数中加入了扩展风格,它也不能出现在窗口中.
<br>
<br>解决方法很简单,在继承类中设置好风格位,如下所示:
<br>BOOL CWhatsThisPropertySheet::OnNcCreate(
<br>    LPCREATESTRUCT lpCreateStruct)
<br>(
<br>   if(!CPropertySheet::OnNcCreate(lpCreateStruct))
<br>      return FALSE;
<br>   //显式地定义此风格
<br>   //CPropertySheet默认是关
<br>   ModifyStyleEx(0, WS_EX_CONTEXTHELP);
<br>   return true;
<br>)
<br>
<br>
<br>精通工具条
<br>VC++的工具条有很多特性,但有时候也会让你感到困惑. 这里有一些使它们服服贴
<br>贴的小技巧.
<br>要移走一个工具条项,只须将它拖到空工具条的右边,然后点击右上角的关闭按钮.
<br>注意显示在浮动工具条菜单条上的工具条的名称,可以通过右击菜单条来关闭 一
<br>个工具条,使之挂起.反过来,激活一个挂起的工具条,右击你菜单条或另一个工具
<br>条,然后选中 你想看到的工具条的名字.
<br>如果你想同时开关好几个工具条,不用一个一个地去右击,使用菜单上的工具, 用
<br>户化菜单命令,会出现工具条制表顺序对话框,然后进行选择. 这个对话框也允许
<br>挂起干扰你的工具条,或者增大看不见工具条按钮的图标.
<br>你可以在调试时使用和编辑代码时不同的工具条布局,而二者不互相干扰.当你发
<br>现浮动工具条停在不期望的位置时,按住Ctrl键,然后用鼠标将它移到旁边去, 当
<br>你停下来的时候,它不再回去,即使你把它放在另一个工具条的上面.
<br>
<br>
<br>如何改变视窗的背景颜色
<br>
<br>Windows向窗口发送一个WM_ERASEBKGND消息通知该窗口擦除背景,可以使用
<br>ClassWizard重载该消息的缺省处理程序来擦除背景(实际是画),并返回
<br>TRUE以防止Windows擦除窗口。
<br>//Paint area that needs to be erased.
<br>BOOL CSampleView : : OnEraseBkgnd (CDC* pDC)
<br>{
<br>// Create a pruple brush.
<br>CBrush Brush (RGB (128 , 0 , 128) );
<br>// Select the brush into the device context .
<br>CBrush* pOldBrush = pDC—&gt;SelcetObject (&brush);
<br>// Get the area that needs to be erased .
<br>CRect reClip ;
<br>pDC—&gt;GetCilpBox (&rcClip);
<br>//Paint the area.
<br>pDC—&gt; PatBlt (rcClip.left , rcClip.top ,
<br>rcClip.Width ( ) , rcClip.Height ( ) , PATCOPY );
<br>//Unselect brush out of device context .
<br>pDC—&gt;SelectObject (pOldBrush );
<br>// Return nonzero to half fruther processing .
<br>return TRUE;
<br>}
<br>
<br>
<br>为MFC应用程序添加全屏幕显示功能
<br>
<br>在CMainFrame类中添加下列成员变量和成员函数(使用ClassWizard),下面是这
<br>些变量和函数的功能说明:
<br>成员变量:
<br>    BOOL m_bFullScreen; //全屏幕显示标志
<br>    CRect m_FullScreenWindowRect; //全屏幕显示窗口Rect
<br>    WINDOWPLACEMENT m_wpPrev; //用于保存正常视图时的窗口位置信息
<br>    CToolBar * m_wndFullScreenBar; //全屏幕显示时的浮动工具条
<br>成员函数:
<br>    void OnMenuFullscreen(); //全屏幕显示的处理函数
<br>    void OnGetMinMaxInfo(); //捕获WM_GETMINMAXINFO消息以便允许你增加窗口大小
<br>    void OnUpdateViewFullScreen(); //更新“全屏幕显示”菜单的状态
<br>源码
<br>void CMainFrame::OnMenuFullscreen()
<br>{//全屏幕显示的处理函数
<br>    RECT rectDesktop;
<br>    WINDOWPLACEMENT wpNew;
<br>    if (m_bFullScreen)
<br>    {//全屏幕显示模式
<br>        //隐藏工具条和状态条
<br>        m_wndStatusBar.ShowWindow(SW_HIDE);
<br>        m_wndToolBar.ShowWindow(SW_HIDE);
<br>        //保存正常视图时的窗口位置信息以便恢复原来状态
<br>        GetWindowPlacement (&m_wpPrev);
<br>        m_wpPrev.length = sizeof m_wpPrev;
<br>        //调整RECT为新的窗口尺寸
<br>        ::GetWindowRect ( ::GetDesktopWindow(), &rectDesktop );
<br>        ::AdjustWindowRectEx(&rectDesktop, GetStyle(), TRUE, GetExStyle());
<br>        //保存RECT以便OnGetMinMaxInfo()使用
<br>        m_FullScreenWindowRect = rectDesktop;
<br>        wpNew = m_wpPrev;
<br>        wpNew.showCmd = SW_SHOWNORMAL;
<br>        wpNew.rcNormalPosition = rectDesktop;
<br>        //生成新的工具条
<br>        m_wndFullScreenBar=new CToolBar;
<br>        if(!m_wndFullScreenBar-&gt;Create(this, CBRS_SIZE_DYNAMIC|CBRS_FLOATING)
<br>                || !m_wndFullScreenBar-&gt;LoadToolBar(IDR_FULLSCREEN))
<br>        {
<br>            TRACE0("Failed to create toolbar\n");
<br>            return; // fail to create
<br>        }
<br>        //不允许工具条停泊
<br>        m_wndFullScreenBar-&gt;EnableDocking(FALSE);
<br>        m_wndFullScreenBar-&gt;SetWindowPos(0,100,100,0,0,SWP_NOSIZE
<br>                |SWP_NOZORDER|SWP_NOACTIVATE|SWP_SHOWWINDOW);
<br>        m_wndFullScreenBar-&gt;SetWindowText(_T("全屏幕显示"));
<br>        FloatControlBar(m_wndFullScreenBar, CPoint(100,100));
<br>        m_bFullScreen=TRUE;
<br>    }
<br>    else
<br>    {//正常显示模式
<br>        //删除全屏幕工具条
<br>        m_wndFullScreenBar-&gt;DestroyWindow();
<br>        delete m_wndFullScreenBar;
<br>        m_bFullScreen=FALSE;
<br>        //恢复工具条和状态条
<br>        m_wndStatusBar.ShowWindow(SW_SHOWNORMAL);
<br>        m_wndToolBar.ShowWindow(SW_SHOWNORMAL);
<br>        wpNew = m_wpPrev;
<br>    }
<br>    //设置窗口显示状态
<br>    SetWindowPlacement ( &wpNew );
<br>}
<br>void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
<br>{
<br>    if (m_bFullScreen)
<br>    {
<br>        lpMMI-&gt;ptMaxSize.y = m_FullScreenWindowRect.Height();
<br>        lpMMI-&gt;ptMaxTrackSize.y = lpMMI-&gt;ptMaxSize.y;
<br>        lpMMI-&gt;ptMaxSize.x = m_FullScreenWindowRect.Width();
<br>        lpMMI-&gt;ptMaxTrackSize.x = lpMMI-&gt;ptMaxSize.x;
<br>    }
<br>}
<br>void CMainFrame::OnUpdateMenuFullscreen(CCmdUI* pCmdUI)
<br>{//更新菜单的状态
<br>    pCmdUI-&gt;Enable();
<br>    pCmdUI-&gt;SetCheck(m_bFullScreen);
<br>}
<br>
<br></PRE>
转自南理校友网nclg.cn(by矢泽爱)



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -