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

📄 ptctrl_point.cpp

📁 wince下的画图程序
💻 CPP
字号:
#include "StdAfx.h"
#include "PtCtrl_Point.h"

#include "CEPaint.h"
#include <afx.h>

PtCtrl_Point g_ptctl_point;


INT InitPbCtrl_Point(PtCtrl_Point *pPtCtrl_Point)
{
    InitPbCtrlBase((PtCtrlBase*)pPtCtrl_Point);
	

	pPtCtrl_Point->m_ptctrl_base.PtCtrl_Init = PtCtrl_Point_Init;
	pPtCtrl_Point->m_ptctrl_base.PtCtrl_Destroy = PtCtrl_Point_Destroy;
	
	pPtCtrl_Point->m_ptctrl_base.PtCtrl_OnPaintStart = PtCtrl_Point_OnPaintStart;
	pPtCtrl_Point->m_ptctrl_base.PtCtrl_OnPaintEnd = PtCtrl_Point_OnPaintEnd;
	
	pPtCtrl_Point->m_ptctrl_base.PtCtrl_OnStyleChange = PtCtrl_Point_OnStyleChange;
	pPtCtrl_Point->m_ptctrl_base.PtCtrl_OnColorChange = PtCtrl_Point_OnColorChange;
	
	pPtCtrl_Point->m_ptctrl_base.PtCtrl_OnMouseDown = PtCtrl_Point_OnMouseDown;
	pPtCtrl_Point->m_ptctrl_base.PtCtrl_OnMouseMove = PtCtrl_Point_OnMouseMove;
	pPtCtrl_Point->m_ptctrl_base.PtCtrl_OnMouseRelease = PtCtrl_Point_OnMouseRelease;

	pPtCtrl_Point->m_ptctrl_base.PtCtrl_OnDrawBoard = PtCtrl_Point_OnDrawBoard;
	pPtCtrl_Point->m_ptctrl_base.PtCtrl_OnDrawStyle = PtCtrl_Point_OnDrawStyle;
		
	return 0;
}

INT PtCtrl_Point_Init(PtCtrlBase* pPtCtrl,INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_Init(pPtCtrl);

	PtCtrl_Point *pPtCtrl_Point = (PtCtrl_Point*)pPtCtrl;
	
	pPtCtrl_Point->m_ptctrl_base.m_ctrl_id = PtCtrlType_Point;

	pPtCtrl_Point->m_opt_flag = PtCtrl_Point_Nothing;
	
	pPtCtrl_Point->cx = -1;
	pPtCtrl_Point->cy = -1;

	pPtCtrl_Point->m_pen = NULL;
	return 0;
}

INT PtCtrl_Point_Destroy(PtCtrlBase* pPtCtrl, INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_Destroy(pPtCtrl);
   
    PtCtrl_Point *pPtCtrl_Point = (PtCtrl_Point*)pPtCtrl;

	if(pPtCtrl_Point->m_pen != NULL)
		DeleteObject(pPtCtrl_Point->m_pen);

	return 0;
}

INT PtCtrl_Point_OnPaintStart(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_OnPaintStart(pPtCtrl);

	PtCtrl_Point *pPtCtrl_Point = (PtCtrl_Point*)pPtCtrl;
	
	pPtCtrl->PtCtrl_OnColorChange(pPtCtrl,m_pt_app_info.m_color_cur,0);
	
	
	return 0;
}

INT PtCtrl_Point_OnPaintEnd(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_OnPaintEnd(pPtCtrl);

	PtCtrl_Point *pPtCtrl_Point = (PtCtrl_Point*)pPtCtrl;
    
    pPtCtrl_Point->cx = -1;
	pPtCtrl_Point->cy = -1;

	pPtCtrl_Point->m_opt_flag = PtCtrl_Point_Nothing;
	

	return 0;
}

INT PtCtrl_Point_OnStyleChange(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_OnStyleChange(pPtCtrl,tx);
	
	PtCtrl_Point *pPtCtrl_Point = (PtCtrl_Point*)pPtCtrl;
	
	
	return 0;
}

INT PtCtrl_Point_OnColorChange(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_OnColorChange(pPtCtrl,tx,ty);
	
	PtCtrl_Point *pPtCtrl_Point = (PtCtrl_Point*)pPtCtrl;
	
	if(pPtCtrl_Point->m_pen != NULL)
		DeleteObject(pPtCtrl_Point->m_pen);

	pPtCtrl_Point->m_pen = CreatePen(PS_SOLID,0,m_pt_app_info.m_color_cur);
	
	
	return 0;
}


INT PtCtrl_Point_OnMouseDown(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_OnMouseDown(pPtCtrl);
    
	PtCtrl_Point *pPtCtrl_Point = (PtCtrl_Point*)pPtCtrl;

	pPtCtrl_Point->m_opt_flag = PtCtrl_Point_SetPixel;
    
	pPtCtrl_Point->m_ptctrl_base.m_cx = tx;
	pPtCtrl_Point->m_ptctrl_base.m_cy = ty;

	pPtCtrl_Point->cx = tx;
    pPtCtrl_Point->cy = ty;

	//UpdateWindow(m_pt_app_info.m_pt_board_hwnd);
	
	m_pt_app_info.m_pt_board_flag |= PT_BOARD_FLAG_PTCTRL;
	InvalidateRect(m_pt_app_info.m_pt_board_hwnd, &m_pt_app_info.m_pt_board_rect,FALSE);

	TRACE(L"On Mouse Down\n");
	
	return 0;
}

INT PtCtrl_Point_OnMouseMove(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_OnMouseMove(pPtCtrl);

	if(pPtCtrl->m_mouse_state & PT_MOUSE_DOWN)
	{
		TRACE(L"OnMouseMove\n");

		PtCtrl_Point *pPtCtrl_Point = (PtCtrl_Point*)pPtCtrl;
		pPtCtrl_Point->m_opt_flag = PtCtrl_Point_LinkLine;
		
		pPtCtrl_Point->cx = tx;
		pPtCtrl_Point->cy = ty;
		
		m_pt_app_info.m_pt_board_flag |= PT_BOARD_FLAG_PTCTRL;		
		InvalidateRect(m_pt_app_info.m_pt_board_hwnd, &m_pt_app_info.m_pt_board_rect,FALSE);
		
	}
	

	return 0;
}

INT PtCtrl_Point_OnMouseRelease(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_OnMouseRelease(pPtCtrl);


	return 0;
}


INT PtCtrl_Point_OnDrawBoard(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrl_Point *pPtCtrl_Point = (PtCtrl_Point*)pPtCtrl;
	
	RECT rt;
	INT cx,cy;

	switch(pPtCtrl_Point->m_opt_flag)
	{
	case PtCtrl_Point_SetPixel:
		
        if(pPtCtrl_Point->m_ptctrl_base.m_cx == pPtCtrl_Point->cx && pPtCtrl_Point->m_ptctrl_base.m_cy == pPtCtrl_Point->cy)
		{
			TRACE(L"point %d ,%d\n", pPtCtrl_Point->m_ptctrl_base.m_cx,pPtCtrl_Point->m_ptctrl_base.m_cy);

			SelectObject(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Point->m_pen);
			SetPixel(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Point->cx,pPtCtrl_Point->cy,m_pt_app_info.m_color_cur);
		    
			cx = pPtCtrl_Point->cx - m_pt_app_info.m_pt_bakup_pos.x;
            cx = cx << m_pt_app_info.m_pt_zoom_size;
			
			cy = pPtCtrl_Point->cy - m_pt_app_info.m_pt_bakup_pos.y;
            cy = cy << m_pt_app_info.m_pt_zoom_size;

			StretchBlt(pPtCtrl_Point->m_ptctrl_base.m_pdc,
				cx,cy,
				1<<m_pt_app_info.m_pt_zoom_size,1<<m_pt_app_info.m_pt_zoom_size,
				m_pt_app_info.m_pt_backup_hdc,
				pPtCtrl_Point->cx,pPtCtrl_Point->cy,
				1,1,
 				SRCCOPY);

		}

		//TRACE("On Draw Board\n");
		
		break;
	
	case PtCtrl_Point_LinkLine:

			//MoveToEx(pPtCtrl->m_pdc,pPtCtrl_Point->m_ptctrl_base.m_cx,pPtCtrl_Point->m_ptctrl_base.m_cy,NULL);
		TRACE(L"line %d ,%d -> %d,%d\n", pPtCtrl_Point->m_ptctrl_base.m_cx,pPtCtrl_Point->m_ptctrl_base.m_cy, pPtCtrl_Point->cx,pPtCtrl_Point->cy);	
		MoveToEx(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Point->m_ptctrl_base.m_cx,pPtCtrl_Point->m_ptctrl_base.m_cy,NULL);
		
			//SelectObject(pPtCtrl->m_pdc,pPtCtrl_Point->m_pen);
            SelectObject(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Point->m_pen);

			//LineTo(pPtCtrl->m_pdc,pPtCtrl_Point->cx,pPtCtrl_Point->cy);
			LineTo(m_pt_app_info.m_pt_backup_hdc,pPtCtrl_Point->cx,pPtCtrl_Point->cy);
            
			PtCreateRect(
				pPtCtrl_Point->m_ptctrl_base.m_cx, pPtCtrl_Point->m_ptctrl_base.m_cy,
                pPtCtrl_Point->cx, pPtCtrl_Point->cy,
				m_pt_app_info.m_pt_bakup_pos.x + (m_pt_app_info.m_pt_draw_rect.right>>m_pt_app_info.m_pt_zoom_size),
				m_pt_app_info.m_pt_bakup_pos.y + (m_pt_app_info.m_pt_draw_rect.bottom>>m_pt_app_info.m_pt_zoom_size),
				&rt);

			cx = rt.left - m_pt_app_info.m_pt_bakup_pos.x;
            cx = cx << m_pt_app_info.m_pt_zoom_size;
			
			cy = rt.top - m_pt_app_info.m_pt_bakup_pos.y;
            cy = cy << m_pt_app_info.m_pt_zoom_size;

			StretchBlt(pPtCtrl_Point->m_ptctrl_base.m_pdc,
				cx,cy,
				(rt.right - rt.left)<<m_pt_app_info.m_pt_zoom_size,(rt.bottom - rt.top)<<m_pt_app_info.m_pt_zoom_size,
				m_pt_app_info.m_pt_backup_hdc,
				rt.left,rt.top,
				(rt.right - rt.left),(rt.bottom - rt.top),
 				SRCCOPY);

			pPtCtrl_Point->m_ptctrl_base.m_cx = pPtCtrl_Point->cx;
			pPtCtrl_Point->m_ptctrl_base.m_cy = pPtCtrl_Point->cy;

		break;

	default :
		pPtCtrl_Point->m_opt_flag = PtCtrl_Point_Nothing;
		return 1;
	}
	
	pPtCtrl_Point->m_opt_flag = PtCtrl_Point_Nothing;
	return 0;
}

INT PtCtrl_Point_OnDrawStyle(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_OnDrawStyle(pPtCtrl,tx);
	PtCtrl_Point *pPtCtrl_Point = (PtCtrl_Point*)pPtCtrl;

	TRACE(TEXT("Point_OnDrawStyle \n"));
	
	return 0;
}

⌨️ 快捷键说明

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