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

📄 uitextedit.c

📁 嵌入工linux开发的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
    {
        return NULL;
    }                

    memset( pBuff,0,wTextLen);

    memcpy(pBuff,ptTextEdit->m_pText,wTextLen);

    pBuff[wTextLen] =0;

    return pBuff;
}

//===============================================================
DLL_EXP(int) guiText_Set_USERCHAR(HNDL hTextEdit,char *pUserChar)
{
    TTEXTEDIT     *ptTextEdit;
    //char *pstr;

	if(hTextEdit == NULL)
	{
    return STATUS_ERR;
    }

	ptTextEdit=(TTEXTEDIT *)hTextEdit;
    if(ptTextEdit->base.checkFlag!=GUI_CONTROL_CHECK_FLAG)
	{
	return STATUS_ERR;
	}
    if(pUserChar == NULL || *pUserChar==0)
       return STATUS_ERR;
    ptTextEdit->m_pUserChar = pUserChar;

	return 1;
}

//=================================================================
BOOL _guiText_Tell_USERCHAR(HNDL hTextEdit,char cChar)
{
    TTEXTEDIT     *ptTextEdit;
    char *pstr;

	if(hTextEdit == NULL)
	{
    	return 0;
    }

	ptTextEdit=(TTEXTEDIT *)hTextEdit;
    if(ptTextEdit->base.checkFlag!=GUI_CONTROL_CHECK_FLAG)
	{
		return 0;
	}
    if(ptTextEdit->m_pUserChar ==NULL || *ptTextEdit->m_pUserChar ==0)
        return 0;
    pstr = ptTextEdit->m_pUserChar;
    while(*pstr)
    {
        if(*pstr == cChar)
             return 1;
        pstr++;

    }

	return 0;
}

//==========================================================
DLL_EXP(char*)   guiTextEdit_GetAllText( HNDL hTextEdit)
{
	TTEXTEDIT  *ptTextEdit;

	if(hTextEdit == NULL )
		return NULL;

    ptTextEdit=(TTEXTEDIT *)hTextEdit;
    if(ptTextEdit->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
    {
        return NULL;
    }

    return ptTextEdit->m_pText;
}

//================================================================================
DLL_EXP(STATUS)  guiTextEdit_Select( HNDL hTextEdit, WORD start, WORD end )
{
    TTEXTEDIT  *ptTextEdit;

	if(hTextEdit == NULL )
	    return STATUS_ERR;
    guiEnterWCS();
    ptTextEdit=(TTEXTEDIT *)hTextEdit;
    if(ptTextEdit->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
    {
        guiExitWCS();
	    return STATUS_ERR;
    }

    if(/*tong end<=0 || start<0 || */end<=start)
    {
        guiExitWCS();
	    return STATUS_ERR;
    }
    ptTextEdit->m_MarkBegin = start;
    ptTextEdit->m_MarkEnd = end;
    _guiTextEdit_Paint( hTextEdit,1);
	guiExitWCS();
   return STATUS_OK;
}

//=================================================================================
DLL_EXP(STATUS)  guiTextEdit_DeSelect( HNDL hTextEdit )
{
    TTEXTEDIT  *ptTextEdit;

	if(hTextEdit == -1 )
	    return STATUS_ERR;
    guiEnterWCS();
    ptTextEdit=(TTEXTEDIT *)hTextEdit;
    if(ptTextEdit->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
    {
        guiExitWCS();
	    return STATUS_ERR;
    }
    if(ptTextEdit->m_MarkEnd == -1 && ptTextEdit->m_MarkBegin == -1)
	{
        guiExitWCS();
	    return STATUS_ERR;
	}
    _guiTextEdit_DeSelect( hTextEdit );
    _guiTextEdit_Paint( hTextEdit,1 );
	guiExitWCS();
    return STATUS_OK;
}

//==================================================================================
DLL_EXP(int)  guiTextEdit_GetSelectLen( HNDL hTextEdit )
{
    TTEXTEDIT  *ptTextEdit;

	if(hTextEdit == -1 )
		return STATUS_ERR;

    ptTextEdit=(TTEXTEDIT *)hTextEdit;
    if(ptTextEdit->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
    {
       return STATUS_ERR;
    }
    if((ptTextEdit->m_MarkEnd-ptTextEdit->m_MarkBegin)<0)
       return STATUS_ERR;

    return (ptTextEdit->m_MarkEnd-ptTextEdit->m_MarkBegin);
}
//==================================================================================
DLL_EXP(char*)   guiTextEdit_GetSelectText( HNDL hTextEdit)
{
    TTEXTEDIT  *ptTextEdit;
    char *pStr;
    int i;

	if(hTextEdit == NULL )
		return NULL;
    guiEnterWCS();
    ptTextEdit=(TTEXTEDIT *)hTextEdit;
    if(ptTextEdit->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
    {
        guiExitWCS();
		return NULL;
    }
    if((ptTextEdit->m_MarkEnd-ptTextEdit->m_MarkBegin)<=0)
	{
		guiExitWCS();
        return NULL;
	}
    memset(_PASTE_TEXT_BUFF,0,1024);
    pStr = ptTextEdit->m_pText;
    for(i=0;i<ptTextEdit->m_MarkBegin && pStr!=0 && *pStr!=0;i++,pStr++) ;
    memcpy( _PASTE_TEXT_BUFF,pStr,(ptTextEdit->m_MarkEnd-ptTextEdit->m_MarkBegin));
	guiExitWCS();
    return _PASTE_TEXT_BUFF;
}

//==================================================================================
DLL_EXP(STATUS)   guiTextEdit_DeleteSelectText( HNDL hTextEdit)
{
    TTEXTEDIT  *ptTextEdit;
    int i,charCount;

	if(hTextEdit == NULL )
	    return STATUS_ERR;
    guiEnterWCS();
    ptTextEdit=(TTEXTEDIT *)hTextEdit;
    if(ptTextEdit->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
    {
        guiExitWCS();
	    return STATUS_ERR;
    }
    if(ptTextEdit->m_bReadOnly)
    {
		guiExitWCS();
	    return STATUS_ERR;
	}
    if((ptTextEdit->m_MarkEnd-ptTextEdit->m_MarkBegin)<=0)
	{
	   guiExitWCS();
       return STATUS_ERR;
	}
    charCount = (ptTextEdit->m_MarkEnd-ptTextEdit->m_MarkBegin);

    for(i=ptTextEdit->m_MarkBegin;(i+charCount)<ptTextEdit->m_TxtLength;i++)
        ptTextEdit->m_pText[i] = ptTextEdit->m_pText[i+charCount];
    ptTextEdit->m_TxtLength -= charCount;
	ptTextEdit->m_pText[ptTextEdit->m_TxtLength]  = 0;
    ptTextEdit->m_CursorPos -= charCount;
    if(_guiAdjustText( hTextEdit) == STATUS_ERR)
    {
		guiExitWCS();
	    return STATUS_ERR;
	}
    _guiTextEdit_DeSelect( hTextEdit );
    _guiTextEdit_Paint( hTextEdit,1);
    guiExitWCS();
    return STATUS_OK;
}

DLL_EXP(STATUS)    guiTextEdit_CutText( void )
{
    TTEXTEDIT  *ptTextEdit;

	if(_FocusHandle_Text == NULL )
	    return STATUS_ERR;

    ptTextEdit=(TTEXTEDIT *)_FocusHandle_Text;
    if(ptTextEdit->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
    {
	    return STATUS_ERR;
    }
    if(ptTextEdit->m_bReadOnly)
    {
//tong		guiExitWCS();
	    return STATUS_ERR;
	}
    if(guiTextEdit_GetSelectText(_FocusHandle_Text))
    {
        guiTextEdit_DeleteSelectText(_FocusHandle_Text);
    }

    return STATUS_OK;
}

DLL_EXP(STATUS)    guiTextEdit_CopyText( void )
{
    TTEXTEDIT  *ptTextEdit;

	if(_FocusHandle_Text == NULL )
	    return STATUS_ERR;

    ptTextEdit=(TTEXTEDIT *)_FocusHandle_Text;
    if(ptTextEdit->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
    {
	    return STATUS_ERR;
    }
    if(0 == guiTextEdit_GetSelectText(_FocusHandle_Text))
    {
        return STATUS_ERR;
    }

    return STATUS_OK;
}

DLL_EXP(STATUS)    guiTextEdit_PasteText( void )
{
    TTEXTEDIT  *ptTextEdit;

	if(_FocusHandle_Text == NULL )
	    return STATUS_ERR;
    ptTextEdit=(TTEXTEDIT *)_FocusHandle_Text;
    if(ptTextEdit->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
    {
	    return STATUS_ERR;
    }
    if(ptTextEdit->m_bReadOnly)
    {
//tong		guiExitWCS();
	    return STATUS_ERR;
	}
    if(STATUS_OK == guiTextEdit_InsertText( _FocusHandle_Text, ptTextEdit->m_CursorPos,(BYTE *)_PASTE_TEXT_BUFF ))
        return STATUS_OK;
    return STATUS_ERR;
}
/********************************PRIVATE FUN>>*********************/
//=================================================================================
static int    _guiTextEdit_DeSelect( HNDL hTextEdit )
{
    TTEXTEDIT  *ptTextEdit;

	if(hTextEdit == -1 )
	return STATUS_ERR;
    guiEnterWCS();
    ptTextEdit=(TTEXTEDIT *)hTextEdit;
    if(ptTextEdit->base.checkFlag != GUI_CONTROL_CHECK_FLAG)
    {
        guiExitWCS();
	    return STATUS_ERR;
    }
    if(ptTextEdit->m_MarkEnd == -1 && ptTextEdit->m_MarkBegin == -1)
	{
        guiExitWCS();
	    return STATUS_ERR;
	}
    ptTextEdit->m_MarkEnd = -1;
    ptTextEdit->m_MarkBegin = -1;
	guiExitWCS();
    return 1;
}

//=================================================================
static int _guiTextEdit_AddChar(HNDL hTextEdit ,const BYTE *pChar)
{
    TTEXTEDIT  *ptTextEdit;
//    short i;

	if(hTextEdit == NULL)
	{
    return STATUS_ERR;
    }
    guiEnterWCS() ;
	ptTextEdit=(TTEXTEDIT *)hTextEdit;
    if(ptTextEdit->base.checkFlag!=GUI_CONTROL_CHECK_FLAG)
	{
		guiExitWCS();
	return STATUS_ERR;
	}
    _guiTextEdit_InsertChar(hTextEdit , pChar, ptTextEdit->m_TxtLength);

    guiExitWCS() ;

	return 1;
}

//=================================================================
static int _guiTextEdit_InsertChar(HNDL hTextEdit ,const BYTE *pChar,short nPos)
{
    TTEXTEDIT  *ptTextEdit;
    short i;
    int iRet = -1;
    BYTE *pChart;

	if(hTextEdit == NULL)
	{
    return STATUS_ERR;
    }
    pChart =(BYTE *) pChar;
    guiEnterWCS() ;
	ptTextEdit=(TTEXTEDIT *)hTextEdit;
    if(ptTextEdit->base.checkFlag!=GUI_CONTROL_CHECK_FLAG)
	{
		guiExitWCS();
		return STATUS_ERR;
	}

    if((*pChart)<0x80 && (*pChart)!=0x0D)
    {
        if((ptTextEdit->m_TxtLength+1)>(ptTextEdit->m_MaxLength))
        {
		    //ptTextEdit->m_TxtLength = ptTextEdit->m_MaxLength;
            guiExitWCS();
           return STATUS_ERR;
	    }
        else
            ptTextEdit->m_TxtLength++;
    }
    else
    {
        if((ptTextEdit->m_TxtLength+2)> ptTextEdit->m_MaxLength)
        {
		   // ptTextEdit->m_TxtLength = ptTextEdit->m_MaxLength;
           guiExitWCS();
           return STATUS_ERR;
	    }
        ptTextEdit->m_TxtLength +=2;
    }


    if((*pChart)<0x80 && (*pChart)!=0x0D)
    {
        for(i = (ptTextEdit->m_TxtLength);i>nPos;i--)
            ptTextEdit->m_pText[i] = ptTextEdit->m_pText[i-1];
        ptTextEdit->m_pText[nPos] = *pChart;
        iRet = 1;
    }
    else
    {
        if(ptTextEdit->m_TxtLength>2)
        for(i = (ptTextEdit->m_TxtLength);(i-2)>=nPos;i--)
            ptTextEdit->m_pText[i] = ptTextEdit->m_pText[i-2];
        if((*pChart)==0x0D)
        {
            pChart[0] = 0x0D;
            pChart[1] = 0x0A;
        }
        ptTextEdit->m_pText[nPos] = pChart[0];
        ptTextEdit->m_pText[nPos+1] = pChart[1];
        iRet = 1;
    }
    ptTextEdit->m_pText[ptTextEdit->m_TxtLength] = '\0';
    guiExitWCS() ;

	return iRet;
}

//=================================================================
static int _guiTextEdit_DelChar(HNDL hTextEdit ,short nPos)
{
    TTEXTEDIT  *ptTextEdit;
    short i;
    int val;

	if(hTextEdit == NULL)
	{
    return STATUS_ERR;
    }
    guiEnterWCS() ;
	ptTextEdit=(TTEXTEDIT *)hTextEdit;
    if(ptTextEdit->base.checkFlag!=GUI_CONTROL_CHECK_FLAG)
	{
		guiExitWCS();
	return STATUS_ERR;
	}
    if(nPos>(ptTextEdit->m_TxtLength-1) || ptTextEdit->m_TxtLength==0)
    {
		guiExitWCS();
	return STATUS_ERR;
	}

    if(((BYTE)ptTextEdit->m_pText[nPos] < 0x80 && (BYTE)ptTextEdit->m_pText[nPos]!=0x0D)
    || ((BYTE)ptTextEdit->m_pText[nPos]==0x0D && (BYTE)ptTextEdit->m_pText[nPos+1] !=0x0A))
    {
        for(i =nPos;i<ptTextEdit->m_TxtLength;i++)
            ptTextEdit->m_pText[i] = ptTextEdit->m_pText[i+1];
        if(nPos == 0 && ptTextEdit->m_TxtLength==1)
        {
           ptTextEdit->m_pText[0] = '\0';

⌨️ 快捷键说明

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