📄 cdxcdynamicbar.cpp
字号:
// cdxCDynamicBar.cpp : implementation file//#include "stdafx.h"#include "cdxCDynamicBar.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// cdxCDynamicBarDlg dialog/////////////////////////////////////////////////////////////////////////////IMPLEMENT_DYNAMIC(cdxCDynamicBarDlg,cdxCDynamicChildDlg);/////////////////////////////////////////////////////////////////////////////// cdxCDynamicBarDlg dialog/////////////////////////////////////////////////////////////////////////////BEGIN_MESSAGE_MAP(cdxCDynamicBarDlg, cdxCDynamicChildDlg) ON_WM_CLOSE()END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// cdxCDynamicBarDlg functions/////////////////////////////////////////////////////////////////////////////bool cdxCDynamicBarDlg::Create(cdxCDynamicBar *pBar){ return cdxCDynamicChildDlg::Create(m_nID,(CWnd *)pBar) != FALSE;}/////////////////////////////////////////////////////////////////////////////// cdxCDynamicBar/////////////////////////////////////////////////////////////////////////////IMPLEMENT_DYNAMIC(cdxCDynamicBar,CSizingControlBar);/////////////////////////////////////////////////////////////////////////////// construction/////////////////////////////////////////////////////////////////////////////BEGIN_MESSAGE_MAP(cdxCDynamicBar, CSizingControlBar) //{{AFX_MSG_MAP(cdxCDynamicBar) ON_WM_SIZING() ON_WM_SIZE() ON_WM_NCCALCSIZE() //}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// cdxCDynamicBar message handlers//////////////////////////////////////////////////////////////////////////////* * create bar & dialog */BOOL cdxCDynamicBar::Create(LPCTSTR lpszWindowName, CWnd* pParentWnd, CSize sizeDefault, BOOL bHasGripper, UINT nID, DWORD dwStyle){ if(!( CSizingControlBar::Create( lpszWindowName, pParentWnd, sizeDefault, bHasGripper, nID, dwStyle|WS_CLIPCHILDREN) )) { ASSERT(false); return FALSE; } if(!( m_rDlg.Create(this) )) { DestroyWindow(); ASSERT(false); return FALSE; } ASSERT(::IsWindow(m_hWnd)); ASSERT(m_rDlg.IsWindow()); ASSERT(!m_rectBorder.IsRectNull()); // the following code will even be provided by m_szMin.cx = m_rectBorder.left + m_rectBorder.right; m_szMin.cy = m_rectBorder.top + m_rectBorder.bottom; m_szMin += m_rDlg.m_szMin; return TRUE;} /* * route command UI updates to dialog */void cdxCDynamicBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler){ CSizingControlBar::OnUpdateCmdUI(pTarget,bDisableIfNoHndler); if(m_rDlg.IsWindow()) m_rDlg.OnUpdateCmdUI(pTarget,bDisableIfNoHndler);}/* * when sizing starts, we'll force the super-duper anti-flickering mode : */void cdxCDynamicBar::OnSizing(UINT fwSide, LPRECT pRect) { CSizingControlBar::OnSizing(fwSide, pRect); m_rDlg.StartAntiFlickering((fwSide == WMSZ_BOTTOM) || (fwSide == WMSZ_BOTTOMRIGHT) || (fwSide == WMSZ_RIGHT));}/* * let my dialog cover the entire area */void cdxCDynamicBar::OnSize(UINT nType, int cx, int cy) { CSizingControlBar::OnSize(nType, cx, cy); if(::IsWindow(m_hWnd) && m_rDlg.IsWindow() && (nType != SIZE_MINIMIZED)) { m_rDlg.SetWindowPos( NULL,0,0,cx,cy, SWP_NOACTIVATE| SWP_NOOWNERZORDER| SWP_NOZORDER); } }/* * OnNcCalcSize() is used to calculate the optimum * min size for the dialog. */void cdxCDynamicBar::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) { m_rectBorder = lpncsp->rgrc[0]; // load initial rectangle CSizingControlBar::OnNcCalcSize(bCalcValidRects, lpncsp); ASSERT(m_rectBorder.left <= lpncsp->rgrc[0].left); ASSERT(m_rectBorder.top <= lpncsp->rgrc[0].top); ASSERT(m_rectBorder.right >= lpncsp->rgrc[0].right); ASSERT(m_rectBorder.bottom >= lpncsp->rgrc[0].bottom); m_rectBorder.left = lpncsp->rgrc[0].left - m_rectBorder.left; m_rectBorder.top = lpncsp->rgrc[0].top - m_rectBorder.top; m_rectBorder.right = m_rectBorder.right - lpncsp->rgrc[0].right; m_rectBorder.bottom = m_rectBorder.bottom - lpncsp->rgrc[0].bottom; m_szMin = m_rDlg.m_szMin; m_szMin.cx += m_rectBorder.left + m_rectBorder.right; m_szMin.cy += m_rectBorder.top + m_rectBorder.bottom;}/* * route commands a long... */BOOL cdxCDynamicBar::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) { if(m_rDlg.IsWindow() && m_rDlg.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)) return TRUE; return CSizingControlBar::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);}/* * route commands ... */BOOL cdxCDynamicBar::OnCommand(WPARAM wParam, LPARAM lParam) { if(m_rDlg.IsWindow() && m_rDlg.OnCommand(wParam, lParam)) return TRUE; return CSizingControlBar::OnCommand(wParam, lParam);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -