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

📄 brw_key.c

📁 好记星的控件,包括button,list,对文件操作
💻 C
📖 第 1 页 / 共 2 页
字号:
								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 + -