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

📄 waveeditctrl.cpp

📁 看看就知道了看看就知道了看看看看就知道了就知道了
💻 CPP
字号:
// WaveEditCtrl.cpp : implementation file
//

#include "stdafx.h"
#include "WaveEdit.h"
#include "WaveEditCtrl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CWaveEditCtrl

CWaveEditCtrl::CWaveEditCtrl()
{
	m_bStopped = FALSE;

	m_hCursorArrow = AfxGetApp()->LoadStandardCursor (IDC_ARROW);
    m_hCursorIBeam = AfxGetApp()->LoadStandardCursor (IDC_IBEAM);
}

CWaveEditCtrl::~CWaveEditCtrl()
{
}


BEGIN_MESSAGE_MAP(CWaveEditCtrl, CWnd)
	//{{AFX_MSG_MAP(CWaveEditCtrl)
	ON_WM_PAINT()
	ON_WM_SETCURSOR()
	ON_WM_CREATE()
	ON_WM_LBUTTONDOWN()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CWaveEditCtrl message handlers

int CWaveEditCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
		
	CRect rcClient;
	GetClientRect(rcClient);
	
	m_ptOrigin.x = rcClient.left;
    m_ptOrigin.y = rcClient.top;
    m_ptCaretPos = m_ptOrigin;
	
	return 0;
}

BOOL CWaveEditCtrl::Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
{
	pContext = NULL;

	static CString className = AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW);

	return CWnd::CreateEx(WS_EX_CLIENTEDGE | WS_EX_STATICEDGE,
		className, NULL, dwStyle, 
		rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top,
		pParentWnd->GetSafeHwnd(), (HMENU) nID);
}

void CWaveEditCtrl::OnPaint() 
{
	int amp;
	CPaintDC dc(this); // device context for painting
	
	CPen* pOldPen;

	CPen pen (PS_SOLID, 0,  RGB(0,255,0));
	pOldPen = dc.SelectObject(&pen);

	CRect rcClient;
	GetClientRect(rcClient);

	for(int i = 0; i < rcClient.Width(); ++i){
		amp = (rand()% 15)% (rcClient.Height() / 2);
		dc.MoveTo (rcClient.left + i, rcClient.top + (rcClient.Height()/2) - amp);
		dc.LineTo (rcClient.left + i, rcClient.top + (rcClient.Height()/2) + amp);
	}
	
	dc.SelectObject(pOldPen);
	// Do not call CWnd::OnPaint() for painting messages

}

void CWaveEditCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
	nFlags = NULL;

	m_bStopped = TRUE;
	MoveCaret();
	m_ptCaretPos.x = point .x;
	
}

BOOL CWaveEditCtrl::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{
	CRect rcClient;
	GetClientRect(rcClient);

	if (nHitTest == HTCLIENT) {
        DWORD dwPos = ::GetMessagePos ();
        CPoint point (LOWORD (dwPos), HIWORD (dwPos));
        ScreenToClient (&point);
        ::SetCursor (rcClient.PtInRect (point) ?
            m_hCursorIBeam : m_hCursorArrow);
        return TRUE;
    }
	
	return CWnd::OnSetCursor(pWnd, nHitTest, message);
}

void CWaveEditCtrl::MoveCaret()
{
	//Invalidate();
	CRect rcClient;
	GetClientRect(rcClient);
	
	m_ptCaretPos.x = m_ptCaretPos.x + 1;

	if (m_ptCaretPos.x  > rcClient.Width()){
		m_bStopped = TRUE;
		m_ptCaretPos.x = 0;
	}
	
	SetCaretPos(m_ptCaretPos);

}

void CWaveEditCtrl::SetCaret()
{
	CRect rcClient;
	GetClientRect(rcClient);
	
	CreateSolidCaret (max (1, ::GetSystemMetrics (SM_CXBORDER)),
        rcClient.bottom - rcClient.top);
    SetCaretPos (m_ptCaretPos);
    ShowCaret ();

}

void CWaveEditCtrl::KillCaret()
{
	HideCaret ();
    m_ptCaretPos = GetCaretPos ();
    ::DestroyCaret ();

}

⌨️ 快捷键说明

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