📄 ptctrl_point.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 + -