📄 brw_pen.c
字号:
/**************************************************************************
Copyright (C) 2005 SHENZHEN MEIJIN CO.LTD
FILE NAME: brw_pen.C
MODULE NAME: browser
DESCRIPTION: 提供了浏览器笔点处理
对外函数声明:
BrowserMarkPenProcess 笔点处理函数
**************************************************************************
DTAE AUTHOR VERSION REMARKS
=========== ========== ========= ======================================
2006-3-5 gaolinhui V1.0 create
***************************************************************************/
#include "kernel.h"
#include "BrowserIn.h"
/************************************************************************/
/* 函数名称: BrowserMarkPenProcess */
/* 函数描述: 笔点处理函数 */
/* 当前版本: 1.0 */
/* 作 者: gaolinhui */
/* 输入参数: */
/* handle - 对象句柄 */
/* pEvent - 消息指针 */
/* 输出参数: */
/* NONE */
/* 返回值 : */
/* 消息处理返回值 */
/* 更改记录: */
/* =====================================================================*/
/* 日期 人员 版本 描述 */
/* =====================================================================*/
/* 2006-3-1 gaolinhui 1.0 创建 */
/************************************************************************/
#ifdef __VER_PENABLE__
INT BrowserMarkPenProcess(MBrowser *handle, UINT uEvent, UINT uParam)
{
UINT8 *pCurrent;
UINT32 curLine;
UINT16 curCol;
UINT16 penX, penY,x,y;
penX = GET_PEN_X(uParam);
penY = GET_PEN_Y(uParam);
x = penX - handle->pBrwInfo->nX;
y = penY - handle->pBrwInfo->nY;
if (uEvent == EVENT_PENDOWN)
{
/*PENDOWN消息*/
if (!BrowserXyToLineCol(handle,x,y,&curLine,&curCol))
{
return 0;
}
curLine += handle->pBrwInfo->dwTopLine;
/*得到当前笔点的行列位置*/
pCurrent = BrowserLineColToPos(handle, curLine,curCol);
/*得到MARK块位置*/
pCurrent = BrowserLocateMarkPosition(handle,pCurrent,BROWSER_GO_FORWARD);
if (pCurrent != (UINT8*)NULL)
{
/*MARK这个块*/
handle->pBrwInfo->wStates |= BROWSER_STATE_MARKING;
handle->pBrwInfo->pMarkStart = pCurrent;
handle->pBrwInfo->pMarkCur = pCurrent;
handle->pBrwInfo->pMarkEnd = pCurrent
+ BrowserMarkWordMemLen(pCurrent);
/*重画*/
MsgSend2((APGUI_STRUCT_MODEL*)handle,EVENT_DRAW,0);
return 1;
}
}
else if (uEvent == EVENT_PENMOVE)
{
/*PENMOVE消息*/
UINT8 *pNewCursor,*pOldCursor;
UINT8 *pStart,*pOldStart,*pOldEnd;
/*得到原来MARK位置*/
pStart = handle->pBrwInfo->pMarkStart;
pOldCursor = handle->pBrwInfo->pMarkCur;
pOldStart = handle->pBrwInfo->pMarkStart;
pOldEnd = handle->pBrwInfo->pMarkEnd;
/*转换成行列位置*/
if (!BrowserXyToLineCol(handle,x,y,&curLine,&curCol))
{
return 0;
}
/////////////////////////
curLine += handle->pBrwInfo->dwTopLine;
pCurrent = BrowserLineColToPos(handle, curLine,curCol);
if (pCurrent == NULL)
{
return 0;
}
pNewCursor = pCurrent;
/*计算新的MARK位置*/
pCurrent = BrowserGetRealCursor(handle, pNewCursor, pOldCursor);
pNewCursor = pCurrent + BrowserMarkWordMemLen(pCurrent);
/*调整新位置*/
if ((pOldStart < pNewCursor) && (pNewCursor < pOldEnd))
{
if (pOldCursor == pStart)
{
handle->pBrwInfo->pMarkStart = pCurrent;
}
else
{
handle->pBrwInfo->pMarkEnd = pCurrent
+ BrowserMarkWordMemLen(pCurrent);
}
}
else
{
if (pNewCursor <= pStart)
{
handle->pBrwInfo->pMarkStart = pCurrent;
}
else
{
handle->pBrwInfo->pMarkEnd = pCurrent
+ BrowserMarkWordMemLen(pCurrent);
}
}
handle->pBrwInfo->pMarkCur = pCurrent;
/*重画*/
MsgSend2((APGUI_STRUCT_MODEL*)handle, EVENT_DRAW, 0 );
return 1;
}
return 0L;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -