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

📄 multiple.c

📁 深圳市微逻辑电子有限公司 巨果&#8226 Kingmos&reg 系统核心
💻 C
📖 第 1 页 / 共 5 页
字号:
//    SetFocus(lpMultiItemEditStruct->hItemWndList[iActiveItem]);
//   	ShowCaret(lpMultiItemEditStruct->hItemWndList[iActiveItem]);
}
/**************************************************
声明:static LRESULT DoCharFromPos(HWND hWnd,WPARAM wParam,LPARAM lParam)
参数:
	IN hWnd -- 窗口句柄
	IN wParam -- INT ,指定条目
	IN lParam -- MAKELPARAM(x,y),指定的坐标
返回值:低WORD返回指定坐标所在的字符索引位置,高WORD返回该字符所在的行。
功能描述:得到指定点的字符,处理EM_CHARFROMPOS消息。
引用: 
************************************************/
static LRESULT DoCharFromPos(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
  LPMULTIITEMEDITSTRUCT lpMultiItemEditStruct;
  LPEDITITEM lpEditItem;
  int nItem;
  int xPos,yPos;

    lpMultiItemEditStruct=(LPMULTIITEMEDITSTRUCT)GetWindowLong(hWnd,0); // 得到编辑窗口数据
    if (lpMultiItemEditStruct==NULL) return 0;

	  nItem=(int)wParam; // 得到条目索引
	  if (nItem>=lpMultiItemEditStruct->nItemNum)
		  return 0;
    lpEditItem=&lpMultiItemEditStruct->lpItemList[nItem];  // 得到条目结构
    xPos=LOWORD(lParam);
    yPos=HIWORD(lParam);
    return GetCharFromPos(hWnd,lpEditItem,xPos,yPos);  // 得到指定位置的字符

//	return SendMessage(lpMultiItemEditStruct->hItemWndList[nItem],EM_CHARFROMPOS,0,lParam);
}
/**************************************************
声明:static LRESULT DoGetFirstVisibleLine(HWND hWnd,WPARAM wParam,LPARAM lParam)
参数:
	IN hWnd -- 窗口句柄
	IN wParam -- 保留
	IN lParam -- 保留
返回值:返回第一个可见行的索引
功能描述:得到第一个可见行的索引,处理EM_GETFIRSTVISIBLELINE消息。
引用: 
************************************************/
static LRESULT DoGetFirstVisibleLine(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
  LPMULTIITEMEDITSTRUCT lpMultiItemEditStruct;

    lpMultiItemEditStruct=(LPMULTIITEMEDITSTRUCT)GetWindowLong(hWnd,0); // 得到编辑窗口数据
    if (lpMultiItemEditStruct==NULL) return 0;

	return lpMultiItemEditStruct->nDisplayLine;  // 得到显示行索引
}
/**************************************************
声明:static LRESULT DoGetLimitText(HWND hWnd,WPARAM wParam,LPARAM lParam)
参数:
	IN hWnd -- 窗口句柄
	IN wParam -- INT ,指定条目
	IN lParam -- 保留
返回值:返回指定条目的文本限制
功能描述:得到指定条目的文本限制,处理EM_GETLIMITTEXT消息。
引用: 
************************************************/
static LRESULT DoGetLimitText(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
  LPMULTIITEMEDITSTRUCT lpMultiItemEditStruct;
  LPEDITITEM lpEditItem;
  int nItem;

    lpMultiItemEditStruct=(LPMULTIITEMEDITSTRUCT)GetWindowLong(hWnd,0); // 得到编辑窗口数据
    if (lpMultiItemEditStruct==NULL) return 0;

	  nItem=(int)wParam; // 得到条目索引
	  if (nItem>=lpMultiItemEditStruct->nItemNum)
		  return 0;
    lpEditItem=&lpMultiItemEditStruct->lpItemList[nItem];  // 得到条目结构
	  return lpEditItem->cbEditLimitLen; // 返回条目文本限制
}
/**************************************************
声明:static LRESULT DoGetLine(HWND hWnd,WPARAM wParam,LPARAM lParam)
参数:
	IN hWnd -- 窗口句柄
	IN wParam -- INT 指定行的索引
	IN lParam -- LPSTR 存放指定行数据的缓存,前2个字节存放缓存的大小
返回值:返回拷贝字符的个数
功能描述:得到指定行的数据,处理EM_GETLINE消息。
引用: 
************************************************/
static LRESULT DoGetLine(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
  LPMULTIITEMEDITSTRUCT lpMultiItemEditStruct;
  LPEDITITEM lpEditItem;
  int nLine,nLineLen,nBufferMaxLen;
  LPSTR lpch;
  LPSTR lpLineAddress;
  int nItem;

      lpMultiItemEditStruct=(LPMULTIITEMEDITSTRUCT)GetWindowLong(hWnd,0); // 得到编辑窗口数据
      if (lpMultiItemEditStruct==NULL) return 0;

	  if (lpMultiItemEditStruct->nItemNum==0) return 0;  // 没有条目

	  nLine=(int)wParam; // 得到行索引
#ifdef _MAPPOINTER
	  lParam = (LPARAM)MapPtrToProcess( (LPVOID)lParam, GetCallerProcess() );   // 映射指针
#endif
	  lpch=(LPSTR)lParam; // 得到缓存
	  nItem=lpMultiItemEditStruct->nItemNum-1;
	  for (;nItem>=0;nItem--)
	  {
		  if (lpMultiItemEditStruct->nItemStartLineList[nItem]<=nLine)
			  break;
	  }
	  nLine-=lpMultiItemEditStruct->nItemStartLineList[nItem];
    lpEditItem=&lpMultiItemEditStruct->lpItemList[nItem]; // 得到指定行的条目结构

		lpLineAddress=GetLineAddress(hWnd,lpEditItem,nLine);  // 得到行地址
		nLineLen=GetLineLength(hWnd,lpEditItem,(LPCTSTR)lpLineAddress,NULL); // 得到行字符
		nBufferMaxLen=MAKEWORD(*lpch,*(lpch+1));
		if (nLineLen>=nBufferMaxLen)
			return 0;
		memcpy((void *)lpch,(const void *)lpLineAddress,nLineLen);  // 复制数据到缓存
		lpch[nLineLen]=0;
		return nLineLen;
}
/**************************************************
声明:static LRESULT DoGetLineCount(HWND hWnd,WPARAM wParam,LPARAM lParam)
参数:
	IN hWnd -- 窗口句柄
	IN wParam -- 保留
	IN lParam -- 保留
返回值:成功返回控件的总行数,否则返回0
功能描述:得到控件的总行数,处理EM_GETLINECOUNT消息。
引用: 
************************************************/
static LRESULT DoGetLineCount(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
  LPMULTIITEMEDITSTRUCT lpMultiItemEditStruct;

    lpMultiItemEditStruct=(LPMULTIITEMEDITSTRUCT)GetWindowLong(hWnd,0); // 得到编辑窗口数据
    if (lpMultiItemEditStruct==NULL) return 0;
		if (lpMultiItemEditStruct->nItemNum==0) return 0;

		return lpMultiItemEditStruct->nItemStartLineList[lpMultiItemEditStruct->nItemNum]; // 得到总行数
}
/**************************************************
声明:static LRESULT DoGetModify(HWND hWnd,WPARAM wParam,LPARAM lParam)
参数:
	IN hWnd -- 窗口句柄
	IN wParam -- INT 指定编辑条目
	IN lParam -- 保留
返回值:如果指定条目是-1,则返回控件的修改标志,否则返回指定条目的修改标志。
功能描述:返回修改标志,处理EM_GETMODIFY消息。
引用: 
************************************************/
static LRESULT DoGetModify(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
  LPMULTIITEMEDITSTRUCT lpMultiItemEditStruct;
  int nItem;
  LPEDITITEM lpEditItem;

    lpMultiItemEditStruct=(LPMULTIITEMEDITSTRUCT)GetWindowLong(hWnd,0); // 得到编辑窗口数据
    if (lpMultiItemEditStruct==NULL) return FALSE;
	if (lpMultiItemEditStruct->nItemNum==0) return FALSE; // 没有数据
	
	nItem=(int)wParam;  // 得到条目索引

	if (nItem==-1)
	{  // 得到编辑区的编辑标志,是所有条目的标志综合
		for (nItem=0;nItem<lpMultiItemEditStruct->nItemNum-1;nItem++)
		{
			lpEditItem=&lpMultiItemEditStruct->lpItemList[nItem];
			if (lpEditItem->fModified)
			{  // 有条目编辑过,则当前编辑区为已经编辑过
						return TRUE;
			}
		}
	}
	else
	{  // 得到指定条目的编辑标志
		if (nItem>=lpMultiItemEditStruct->nItemNum)
			return FALSE;
		lpEditItem=&lpMultiItemEditStruct->lpItemList[nItem];
		if (lpEditItem->fModified)
		{
			return TRUE;
		}
	}
	return FALSE;
}

/**************************************************
声明:static LRESULT DoGetPasswordChar(HWND hWnd,WPARAM wParam,LPARAM lParam)
参数:
	IN hWnd -- 窗口句柄
	IN wParam -- INT 指定条目的次序
	IN lParam -- 保留
返回值:返回指定条目的密码字符
功能描述:得到条目的密码字符,处理EM_GETPASSWORDCHAR消息。
引用: 
************************************************/
static LRESULT DoGetPasswordChar(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
  LPMULTIITEMEDITSTRUCT lpMultiItemEditStruct;
  LPEDITITEM lpEditItem;
  int nItem;

    lpMultiItemEditStruct=(LPMULTIITEMEDITSTRUCT)GetWindowLong(hWnd,0);
    if (lpMultiItemEditStruct==NULL) return 0;

		nItem=(int)wParam;  // 得到条目索引
		if (nItem>=lpMultiItemEditStruct->nItemNum)
			return 0;
    lpEditItem=&lpMultiItemEditStruct->lpItemList[nItem]; // 得到条目结构
		if (lpEditItem->dwStyle&ES_PASSWORD)
				return lpEditItem->chPassWordWord;  // 返回密码字符
		else
				return 0;
}
/**************************************************
声明:static LRESULT DoSetLimitText(HWND hWnd,WPARAM wParam,LPARAM lParam)
参数:
	IN hWnd -- 窗口句柄
	IN wParam -- INT 要设定的文本限制
	IN lParam -- INT 指定条目的次序
返回值:成功返回TRUE,否则返回FALSE
功能描述:设置指定条目的文本限制,处理EM_SETLIMITTEXT消息。
引用: 
************************************************/
static LRESULT DoSetLimitText(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
  LPMULTIITEMEDITSTRUCT lpMultiItemEditStruct;
   LPEDITITEM lpEditItem;
	 int cchMax;
   int nItem;

    lpMultiItemEditStruct=(LPMULTIITEMEDITSTRUCT)GetWindowLong(hWnd,0); // 得到编辑窗口数据
    if (lpMultiItemEditStruct==NULL) return 0;

		cchMax=(int)wParam;  // 得到限制文本
		nItem=(int)lParam; // 得到条目限制
		if (nItem>=lpMultiItemEditStruct->nItemNum)
			return 0;

	  // Get struct EDITITEM data
    lpEditItem=&lpMultiItemEditStruct->lpItemList[nItem];  // 得到条目结构

    return SetLimitText(hWnd,lpEditItem,cchMax);  // 设定条目限制
}

/**************************************************
声明:static LRESULT DoLineFromChar(HWND hWnd,WPARAM wParam,LPARAM lParam)
参数:
	IN hWnd -- 窗口句柄
	IN wParam -- int ,字符索引
	IN lParam -- INT , 指定条目
返回值:返回指定条目的指定索引字符的行索引。
功能描述:返回指定条目的指定索引字符的行索引,处理EM_LINEFROMCHAR消息。
引用: 
************************************************/
static LRESULT DoLineFromChar(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
  LPMULTIITEMEDITSTRUCT lpMultiItemEditStruct;
  LPEDITITEM lpEditItem;
  int nItem;
	DWORD dwStyle;
	LPTSTR lpCurPos;
	int ich,nLine;

    lpMultiItemEditStruct=(LPMULTIITEMEDITSTRUCT)GetWindowLong(hWnd,0); // 得到编辑窗口数据
    if (lpMultiItemEditStruct==NULL) return 0;

		ich=(int)wParam;  // 得到字符索引
		nItem=(int)lParam; // 得到条目索引
		if (nItem>=lpMultiItemEditStruct->nItemNum)
			return 0;

	  // Get struct EDITITEM data
    lpEditItem=&lpMultiItemEditStruct->lpItemList[nItem];  // 得到条目结构
		dwStyle=lpEditItem->dwStyle;  // 得到条目风格
		if (ich==-1)
		{ // 没有指定字符
				if (lpEditItem->lpInvertStart==lpEditItem->lpInvertEnd)
				{ // 没有选择
						lpCurPos=lpEditItem->lpCaretPosition;
				}
				else
				{  // 选择开始位置
						lpCurPos=lpEditItem->lpInvertStart;
				}
		}
		else
		{ // 有指定字符
				if (ich>lpEditItem->cbEditLen)
					ich=lpEditItem->cbEditLen;
				lpCurPos=lpEditItem->lpPDAEditBuffer+ich;  // 得到字符指针
		}
    GetCoordinate(hWnd,lpEditItem,lpCurPos,NULL,&nLine,dwStyle&ES_MULTILINE);  // 得到指定字符的坐标位置
		return (LRESULT)nLine;
}

/**************************************************
声明:static  LRESULT DoLineIndex(HWND hWnd,WPARAM wParam,LPARAM lParam)
参数:
	IN hWnd -- 窗口句柄
	IN wParam -- INT ,指定行的索引
	IN lParam -- INT ,指定条目
返回值:返回指定条目指定行索引所对应的字符索引
功能描述:得到指定条目指定行索引所对应的字符索引,处理EM_LINEINDEX消息。
引用: 
************************************************/
static  LRESULT DoLineIndex(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
  LPMULTIITEMEDITSTRUCT lpMultiItemEditStruct;
  LPEDITITEM lpEditItem;
	LPTSTR lpCurPos;
	int nLine;
  int nItem;

    lpMultiItemEditStruct=(LPMULTIITEMEDITSTRUCT)GetWindowLong(hWnd,0); // 得到编辑窗口数据
    if (lpMultiItemEditStruct==NULL) return 0;

		nLine=(int)wParam;  // 得到行索引
		nItem=(int)lParam;  // 得到条目索引
		if (nItem>=lpMultiItemEditStruct->nItemNum)
			return 0;

	  // Get struct EDITITEM data
    lpEditItem=&lpMultiItemEditStruct->lpItemList[nItem];  // 得到条目结构
		if (nLine==-1)
		{ // 没有指定行索引
				nLine=

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -