?? ptctrl_frog.cpp
字號(hào):
#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;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -