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

📄 ptctrl_frog.cpp

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

#include "CEPaint.h"

#include <afx.h>

PtCtrl_Frog g_ptctl_frog;


INT InitPbCtrl_Frog(PtCtrl_Frog *pPtCtrl_Frog)
{
    InitPbCtrlBase((PtCtrlBase*)pPtCtrl_Frog);
	
	pPtCtrl_Frog->m_ptctrl_base.PtCtrl_Init = PtCtrl_Frog_Init;
	pPtCtrl_Frog->m_ptctrl_base.PtCtrl_Destroy = PtCtrl_Frog_Destroy;
	
	pPtCtrl_Frog->m_ptctrl_base.PtCtrl_OnPaintStart = PtCtrl_Frog_OnPaintStart;
	pPtCtrl_Frog->m_ptctrl_base.PtCtrl_OnPaintEnd = PtCtrl_Frog_OnPaintEnd;
	
	pPtCtrl_Frog->m_ptctrl_base.PtCtrl_OnStyleChange = PtCtrl_Frog_OnStyleChange;
	pPtCtrl_Frog->m_ptctrl_base.PtCtrl_OnColorChange = PtCtrl_Frog_OnColorChange;
	
	pPtCtrl_Frog->m_ptctrl_base.PtCtrl_OnMouseDown = PtCtrl_Frog_OnMouseDown;
	pPtCtrl_Frog->m_ptctrl_base.PtCtrl_OnMouseMove = PtCtrl_Frog_OnMouseMove;
	pPtCtrl_Frog->m_ptctrl_base.PtCtrl_OnMouseRelease = PtCtrl_Frog_OnMouseRelease;

	pPtCtrl_Frog->m_ptctrl_base.PtCtrl_OnDrawBoard = PtCtrl_Frog_OnDrawBoard;
	pPtCtrl_Frog->m_ptctrl_base.PtCtrl_OnDrawStyle = PtCtrl_Frog_OnDrawStyle;
		
	return 0;
}

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

	PtCtrl_Frog *pPtCtrl_Frog = (PtCtrl_Frog*)pPtCtrl;
	
	pPtCtrl_Frog->m_ptctrl_base.m_ctrl_id = PtCtrlType_Brush;

	pPtCtrl_Frog->m_opt_flag = PtCtrl_Frog_Nothing;
	
	pPtCtrl_Frog->cx = -1;
	pPtCtrl_Frog->cy = -1;

	
	pPtCtrl_Frog->m_pen = NULL;
	
	return 0;
}

INT PtCtrl_Frog_Destroy(PtCtrlBase* pPtCtrl, INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_Destroy(pPtCtrl);
   
    PtCtrl_Frog *pPtCtrl_Frog = (PtCtrl_Frog*)pPtCtrl;

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

	return 0;
}

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

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

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

	PtCtrl_Frog *pPtCtrl_Frog = (PtCtrl_Frog*)pPtCtrl;
    
    pPtCtrl_Frog->cx = -1;
	pPtCtrl_Frog->cy = -1;

	pPtCtrl_Frog->m_opt_flag = PtCtrl_Frog_Nothing;
	

	return 0;
}

INT PtCtrl_Frog_OnStyleChange(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_OnStyleChange(pPtCtrl,tx);
	
	PtCtrl_Frog *pPtCtrl_Frog = (PtCtrl_Frog*)pPtCtrl;
	
	if(pPtCtrl_Frog->m_pen != NULL)
		DeleteObject(pPtCtrl_Frog->m_pen);
	
	
	switch(pPtCtrl_Frog->m_ptctrl_base.m_ctrl_style)
	{
	case 0:
	    pPtCtrl_Frog->m_pen = CreatePen(PS_SOLID,2,m_pt_app_info.m_color_cur);
		break;
	case 1:
		pPtCtrl_Frog->m_pen = CreatePen(PS_SOLID,4,m_pt_app_info.m_color_cur);
		break;
	case 2:
		pPtCtrl_Frog->m_pen = CreatePen(PS_SOLID,8,m_pt_app_info.m_color_cur);
		break;
	}
		
	return 0;
}

INT PtCtrl_Frog_OnColorChange(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_OnColorChange(pPtCtrl,tx,ty);
	
	PtCtrl_Frog *pPtCtrl_Frog = (PtCtrl_Frog*)pPtCtrl;
	
	if(pPtCtrl_Frog->m_pen != NULL)
		DeleteObject(pPtCtrl_Frog->m_pen);

	switch(pPtCtrl_Frog->m_ptctrl_base.m_ctrl_style)
	{
	case 0:
		pPtCtrl_Frog->m_pen = CreatePen(PS_SOLID,2,m_pt_app_info.m_color_cur);
		break;
	case 1:
		pPtCtrl_Frog->m_pen = CreatePen(PS_SOLID,4,m_pt_app_info.m_color_cur);
		break;
	case 2:
		pPtCtrl_Frog->m_pen = CreatePen(PS_SOLID,8,m_pt_app_info.m_color_cur);
		break;
	}
	
	
	return 0;
}


INT PtCtrl_Frog_OnMouseDown(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_OnMouseDown(pPtCtrl);
    
	PtCtrl_Frog *pPtCtrl_Frog = (PtCtrl_Frog*)pPtCtrl;

	pPtCtrl_Frog->m_opt_flag = PtCtrl_Frog_SetPixel;
    
	pPtCtrl_Frog->m_ptctrl_base.m_cx = tx;
	pPtCtrl_Frog->m_ptctrl_base.m_cy = ty;

	pPtCtrl_Frog->cx = tx;
    pPtCtrl_Frog->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_Frog_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_Frog *pPtCtrl_Frog = (PtCtrl_Frog*)pPtCtrl;
		pPtCtrl_Frog->m_opt_flag = PtCtrl_Frog_LinkLine;
		
		pPtCtrl_Frog->cx = tx;
		pPtCtrl_Frog->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_Frog_OnMouseRelease(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrlBase_OnMouseRelease(pPtCtrl);


	return 0;
}


INT PtCtrl_Frog_OnDrawBoard(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrl_Frog *pPtCtrl_Frog = (PtCtrl_Frog*)pPtCtrl;
	
	INT i = 0;
	
	RECT rt;
	
	INT cx,cy;

	switch(pPtCtrl_Frog->m_opt_flag)
	{
	case PtCtrl_Frog_SetPixel:
		
        if(pPtCtrl_Frog->m_ptctrl_base.m_cx == pPtCtrl_Frog->cx && pPtCtrl_Frog->m_ptctrl_base.m_cy == pPtCtrl_Frog->cy)
		{
			srand(pPtCtrl_Frog->m_ptctrl_base.m_ctrl_style);
		
			for(i = 0 ; i < 10<<pPtCtrl_Frog->m_ptctrl_base.m_ctrl_style; i++)
				SetPixel(m_pt_app_info.m_pt_backup_hdc,
				pPtCtrl_Frog->m_ptctrl_base.m_cx + rand()%(10<<pPtCtrl_Frog->m_ptctrl_base.m_ctrl_style),
				pPtCtrl_Frog->m_ptctrl_base.m_cy+ rand()%(10<<pPtCtrl_Frog->m_ptctrl_base.m_ctrl_style),
				m_pt_app_info.m_color_cur);
		
			
// 			for(i = 0 ; i < 10<<m_pt_app_info.m_pt_style_idx; i++)
// 				SetPixel(pPtCtrl->m_pdc,
// 				pPtCtrl_Frog->m_ptctrl_base.m_cx + rand()%(10<<m_pt_app_info.m_pt_style_idx),
// 				pPtCtrl_Frog->m_ptctrl_base.m_cy+ rand()%(10<<m_pt_app_info.m_pt_style_idx),
// 				m_pt_app_info.m_color_cur);
		
		
			//rt = draw_rect;
			
			rt.left = pPtCtrl_Frog->m_ptctrl_base.m_cx;
			rt.right = pPtCtrl_Frog->m_ptctrl_base.m_cx +  (10<<pPtCtrl_Frog->m_ptctrl_base.m_ctrl_style);
			
			rt.top = pPtCtrl_Frog->m_ptctrl_base.m_cy;
			rt.bottom = pPtCtrl_Frog->m_ptctrl_base.m_cy +  (10<<pPtCtrl_Frog->m_ptctrl_base.m_ctrl_style);

// 			PT_SET_SMALL(rt.left,pPtCtrl_Bezzer->m_bak_rect.left);
// 			PT_SET_SMALL(rt.top,pPtCtrl_Bezzer->m_bak_rect.top);
// 			
// 			PT_SET_BIG(rt.right,pPtCtrl_Bezzer->m_bak_rect.right);
// 			PT_SET_BIG(rt.bottom,pPtCtrl_Bezzer->m_bak_rect.bottom);
			
			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->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);
		
		}

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

		for(i = 0 ; i < 10<<pPtCtrl_Frog->m_ptctrl_base.m_ctrl_style; i++)
			SetPixel(m_pt_app_info.m_pt_backup_hdc,
			pPtCtrl_Frog->m_ptctrl_base.m_cx + rand()%(10<<pPtCtrl_Frog->m_ptctrl_base.m_ctrl_style),
			pPtCtrl_Frog->m_ptctrl_base.m_cy+ rand()%(10<<pPtCtrl_Frog->m_ptctrl_base.m_ctrl_style),
			m_pt_app_info.m_color_cur);
		
// 		for(i = 0 ; i < 10<<m_pt_app_info.m_pt_style_idx; i++)
// 			SetPixel(pPtCtrl->m_pdc,
// 			pPtCtrl_Frog->m_ptctrl_base.m_cx + rand()%(10<<m_pt_app_info.m_pt_style_idx),
// 			pPtCtrl_Frog->m_ptctrl_base.m_cy+ rand()%(10<<m_pt_app_info.m_pt_style_idx),
// 			m_pt_app_info.m_color_cur);

		rt.left = pPtCtrl_Frog->m_ptctrl_base.m_cx;
		rt.right = pPtCtrl_Frog->m_ptctrl_base.m_cx +  (10<<pPtCtrl_Frog->m_ptctrl_base.m_ctrl_style);
		
		rt.top = pPtCtrl_Frog->m_ptctrl_base.m_cy;
		rt.bottom = pPtCtrl_Frog->m_ptctrl_base.m_cy +  (10<<pPtCtrl_Frog->m_ptctrl_base.m_ctrl_style);
		
		// 			PT_SET_SMALL(rt.left,pPtCtrl_Bezzer->m_bak_rect.left);
		// 			PT_SET_SMALL(rt.top,pPtCtrl_Bezzer->m_bak_rect.top);
		// 			
		// 			PT_SET_BIG(rt.right,pPtCtrl_Bezzer->m_bak_rect.right);
		// 			PT_SET_BIG(rt.bottom,pPtCtrl_Bezzer->m_bak_rect.bottom);
		
		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->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_Frog->m_ptctrl_base.m_cx = pPtCtrl_Frog->cx;
		pPtCtrl_Frog->m_ptctrl_base.m_cy = pPtCtrl_Frog->cy;
		break;

	default :
		pPtCtrl_Frog->m_opt_flag = PtCtrl_Frog_Nothing;
		return 1;
	}
	
	pPtCtrl_Frog->m_opt_flag = PtCtrl_Frog_Nothing;
	return 0;
}

INT PtCtrl_Frog_OnDrawStyle(PtCtrlBase* pPtCtrl,  INT tx /* = -1 */, INT ty /* = -1 */)
{
	PtCtrl_Frog *pPtCtrl_Frog = (PtCtrl_Frog*)pPtCtrl;
	
	RECT rt;

	GetWindowRect(m_pt_app_info.m_pt_style_bn_hwnd[tx],&rt);
	OffsetRect(&rt,-rt.left,-rt.top);
	
	if(tx == pPtCtrl->m_ctrl_style)
		FillRect(pPtCtrl->m_pdc,&rt,(HBRUSH)GetStockObject(WHITE_BRUSH));


	tx++;
	
	HBRUSH br = CreateSolidBrush(GetPixel(pPtCtrl->m_pdc,0,0));

	FillRect(pPtCtrl->m_pdc,&rt, br); 
	
	for(INT i = 0 ; i < 10 << tx; i ++)
        SetPixel(pPtCtrl->m_pdc,
		         rt.left + rand()%(5<<tx),
				 rt.top + rand()%(5<<tx),
				 RGB(0,0,0));

	return 0;
}

⌨️ 快捷键说明

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