📄 brw_key.c
字号:
UINT32 dwLine;
UINT16 wCol;
BrowserLoadData(handle, pBuf, state, 0);
//找到之前的页首位置
pOld = pOld - dwOffset;
BrowserPosToLineCol(handle,pOld,&dwLine,&wCol);
//调整旧顶行的行号
dwOldTop = dwLine+wLineOffset;
//顶行行号减1,继续搜索
dwTopLine = dwLine;
if(dwTopLine > 0)
{
dwTopLine--;
}
}
}
//否则,翻到了顶行退出
else
{
break;
}
}
}
__BrowserSetTopLine(handle, dwTopLine, TRUE);
}
nRet = 1;
break;
////////////////////////////////////////////////////////////////////////////////
/*
//如果当前顶行超过一页的行数,向前翻一页
if (dwTopLine >= wPageLine)
{
UINT32 pl,old;
old = dwTopLine;
dwTopLine -= wPageLine;
while (1)
{
pl = BrowserPageLineSum(handle,dwTopLine);
if ((dwTopLine + pl) >= old)
{
break;
}
dwTopLine ++;
}
__BrowserSetTopLine(handle, dwTopLine,TRUE);
}
else
{
if (handle->pBrwInfo->wOptions & BROWSER_OPTION_RELOAD)
{ //如果有重装载选项,向前请求数据
MLineInfo lineinfo;
if(!GetLineInfo(handle, dwTopLine, &lineinfo))
{
break;
}
dwOffset = (UINT32)(lineinfo.pLinePtr);
wStateStock = lineinfo.wStates; //保存当前页首状态
if(!GetLineInfo(handle, wPageLine, &lineinfo)) //获取当前显示页尾的数据指针
{
break;
}
dwOffset = (UINT32)(lineinfo.pLinePtr - (UINT8*)dwOffset); //保存页首距离页尾的偏移
//向上请求数据,请求长度为从buffer顶到当前页尾的长度
//请求的数据指针为页尾的指针
g_mBrwCmdParam.uType = CMEX_BROWSER_REQUEST_TOP;
g_mBrwCmdParam.pBrwHdl = (APGUI_STRUCT_MODEL* )handle;
g_mBrwCmdParam.cmdparam.ReqData.uDataRemain =
(UINT)(lineinfo.pLinePtr - handle->pBrwInfo->pBuffer);
g_mBrwCmdParam.cmdparam.ReqData.pData = lineinfo.pLinePtr;
g_mBrwCmdParam.cmdparam.ReqData.wState = lineinfo.wStates;
//发送向上请求数据得消息
nRet = MsgSend2(GetApHandle(),EVENT_CMDEXP, (UINT)&g_BrwCmdExp);
if (!nRet)
{ //请求数据失败,还是原来的数据
if (dwTopLine)
{
dwTopLine = 0;
__BrowserSetTopLine(handle, dwTopLine,TRUE);
}
}
else
{ //请求数据成功
//重新加载数据
UINT8* pBuf = g_mBrwCmdParam.cmdparam.ReqData.BufStartRet;
UINT16 state = g_mBrwCmdParam.cmdparam.ReqData.wStateRet;
UINT8* pOld = g_mBrwCmdParam.cmdparam.ReqData.OldPosRet;
UINT32 dwLine;
UINT16 wCol;
BrowserLoadData(handle, pBuf, state, 0);
//找到之前的页首位置
pOld = pOld - dwOffset;
BrowserPosToLineCol(handle,pOld,&dwLine,&wCol);
if(dwLine >= wPageLine)
{
dwLine -= wPageLine;
}
else
{
dwLine = 0;
}
__BrowserSetTopLine(handle, dwLine,TRUE);
}
}
else
{
if (dwTopLine)
{
dwTopLine = 0;
__BrowserSetTopLine(handle, dwTopLine,TRUE);
}
}
}
nRet = 1;
break;
*/
case MVK_PAGEDOWN:
if (bIsMarking)
{ //如果有Mark,取消mark先
handle->pBrwInfo->wStates &= ~BROWSER_STATE_MARKING;
MsgPost((APGUI_STRUCT_MODEL*)handle, EVENT_DRAW, 0);
}
if ((dwTopLine + wPageLine) > dwTotalLine)
{ //数据结束,退出
nRet = 1;
break;
}
else
{
BOOL bRefresh = FALSE;
if(dwTopLine+wPageLine < dwTotalLine)
{ //当前页如果满,顶行先加一页的行数
dwTopLine += wPageLine;
bRefresh = TRUE;
}
//重新计算页行数
wPageLine = BrowserPageLineSum(handle, dwTopLine);
//如果当前页数据不够
if(dwTopLine+wPageLine >= dwTotalLine)
{
//向下请求数据
if(handle->pBrwInfo->wOptions & BROWSER_OPTION_RELOAD)
{
MLineInfo lineinfo;
UINT8* pData;
UINT16 wOldState;
//计算剩余的数据(当前页)
if(!GetLineInfo(handle, dwTopLine, &lineinfo))
{
__BrowserSetTopLine(handle, dwTopLine,TRUE);
nRet = 1;
break;
}
pData = lineinfo.pLinePtr;
wOldState = lineinfo.wStates;
if(!GetLineInfo(handle, dwTotalLine, &lineinfo))
{
__BrowserSetTopLine(handle, dwTopLine,TRUE);
nRet = 1;
break;
}
g_mBrwCmdParam.cmdparam.ReqData.uDataRemain =
(UINT)(lineinfo.pLinePtr - pData);
g_mBrwCmdParam.cmdparam.ReqData.pData = pData;
g_mBrwCmdParam.cmdparam.ReqData.wState = wOldState;
g_mBrwCmdParam.uType = CMEX_BROWSER_REQUEST_BOT;
g_mBrwCmdParam.pBrwHdl = (APGUI_STRUCT_MODEL* )handle;
//发送向下请求数据消息
nRet = MsgSend2(GetApHandle(),EVENT_CMDEXP, (UINT)&g_BrwCmdExp);
if (nRet) //如果请求数据成功
{
//重新加载数据
UINT8* pBuf = g_mBrwCmdParam.cmdparam.ReqData.BufStartRet;
UINT16 state = g_mBrwCmdParam.cmdparam.ReqData.wStateRet;
UINT8* pOld = g_mBrwCmdParam.cmdparam.ReqData.OldPosRet;
UINT16 wCol;
//load数据
BrowserLoadData(handle, pBuf, state, 0);
BrowserPosToLineCol(handle, pOld, &dwTopLine, &wCol);
bRefresh = TRUE;
}
}
}
if(bRefresh)
{
__BrowserSetTopLine(handle, dwTopLine,TRUE);
}
}
nRet = 1;
break;
////////////////////////////////////////////////////////////////////////////////
/*
dwTopLine += wPageLine;
if (handle->pBrwInfo->wOptions & BROWSER_OPTION_RELOAD)
{
if (dwTopLine + wPageLine > (dwTotalLine - 1))
{ //数据不够,向下请求数据
MLineInfo lineinfo;
UINT8* pData;
UINT16 wOldState;
//计算剩余的数据(当前页)
if(!GetLineInfo(handle, dwTopLine, &lineinfo))
{
__BrowserSetTopLine(handle, dwLine,TRUE);
break;
}
pData = lineinfo.pLinePtr;
wOldState = lineinfo.wStates;
if(!GetLineInfo(handle, handle->pBrwInfo->dwTotalLine, &lineinfo))
{
__BrowserSetTopLine(handle, dwLine,TRUE);
break;
}
g_mBrwCmdParam.cmdparam.ReqData.uDataRemain =
(UINT)(lineinfo.pLinePtr - pData);
g_mBrwCmdParam.cmdparam.ReqData.pData = pData;
g_mBrwCmdParam.cmdparam.ReqData.wState = wOldState;
g_mBrwCmdParam.uType = CMEX_BROWSER_REQUEST_BOT;
g_mBrwCmdParam.pBrwHdl = (APGUI_STRUCT_MODEL* )handle;
//发送向下请求数据消息
nRet = MsgSend2(GetApHandle(),EVENT_CMDEXP, (UINT)&g_BrwCmdExp);
if (nRet) //如果请求数据成功
{
//重新加载数据
UINT8* pBuf = g_mBrwCmdParam.cmdparam.ReqData.BufStartRet;
UINT16 state = g_mBrwCmdParam.cmdparam.ReqData.wStateRet;
UINT8* pOld = g_mBrwCmdParam.cmdparam.ReqData.OldPosRet;
UINT16 wCol;
//load数据
BrowserLoadData(handle, pBuf, state, 0);
BrowserPosToLineCol(handle, pOld, &dwTopLine, &wCol);
}
}
}
__BrowserSetTopLine(handle, dwTopLine,TRUE);
nRet = 1;
break;
*/
case MVK_ESCAPE:
if (bIsMarking)
{
MsgSend2((APGUI_STRUCT_MODEL*)handle,EVENT_COMMAND, CM_BROWSER_CANCELMARK);
nRet = 1;
}
break;
}
return nRet;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -