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

📄 uitextedit.c

📁 嵌入工linux开发的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
        ptTextEdit->m_UnderlineStyle = UNDERLINE_SOLID;
	else if(style&TEXTEDIT_UNDERLINE_HATCH)
		ptTextEdit->m_UnderlineStyle = UNDERLINE_HATCH;
    else
		ptTextEdit->m_UnderlineStyle = UNDERLINE_NONE;

	if(ptTextEdit->base.style & TEXTEDIT_SINGLE_LINE)
	{
		if(style&TEXTEDIT_ALGIN_RIGHT)
			ptTextEdit->m_UnderlineStyle = ALIGNMENT_RIGHT;
		else if(style&TEXTEDIT_ALGIN_CENTER)
			ptTextEdit->m_UnderlineStyle |= ALIGNMENT_CENTER;
		else
			ptTextEdit->m_UnderlineStyle |= ALIGNMENT_LEFT;

		if(style&TEXTEDIT_PASSWORD)
			ptTextEdit->m_bPassword = 1;
		else
			ptTextEdit->m_bPassword = 0;
	}

    _guiAdjustText( hTextEdit);
    guiExitWCS();
	return 1;
}
//================================================================================
DLL_EXP(STATUS)  guiTextEdit_SetProperty( HNDL hTextEdit, BYTE type, short value )
{
	TTEXTEDIT *ptTextEdit;
    short ret;

	if(hTextEdit == NULL)
    {
	    return STATUS_ERR;
    }
    guiEnterWCS() ;
	ptTextEdit=(TTEXTEDIT *)hTextEdit;

    if(ptTextEdit->base.checkFlag!=GUI_CONTROL_CHECK_FLAG)
	{
		guiExitWCS();
	    return STATUS_ERR;
	}

    switch(type)
    {
        case CARET_INDEX:
            if(value<0) value = 0;
            else if(value>ptTextEdit->m_TxtLength)
                value = ptTextEdit->m_TxtLength;
            ptTextEdit->m_CursorPos = value;
            ret = STATUS_OK;
            break;
		/*
         case MAX_LENGTH:
            if(value<0) value = 0;
            ptTextEdit->m_MaxLength = value;
            ret = STATUS_OK;
            break;*/

        case TEXT_SCROLL:
            if(value<0) value = 0;
            else if(value>1)
                value = 1;
            ptTextEdit->m_bScrollEnable =(BYTE) value;
            ret = STATUS_OK;
            break;

        case READ_ONLY:
            if(value<0) value = 0;
            else if(value>1)
                value = 1;
            ptTextEdit->m_bReadOnly = (BYTE)value;
            if(value>0)
            {
				ptTextEdit->m_LineColor = GUI_DARKGRAY;
				ptTextEdit->m_TextColor = GUI_DARKGRAY;
            }
            ret = STATUS_OK;
            break;

        case UNDERLINE_TYPE:
            ptTextEdit->m_UnderlineStyle = (BYTE)value;
            ret = STATUS_OK;
            break;

        case UNDERLINE_COLOR:
            ptTextEdit->m_LineColor = value;
            ret = STATUS_OK;
            break;

        case TEXT_ALIGNMENT:
            if(!(ptTextEdit->base.style & TEXTEDIT_SINGLE_LINE))
                ret = STATUS_ERR;
            else
            {
                ptTextEdit->m_Alignment =(BYTE) value;
                ret = STATUS_OK;
            }
            break;

        case LINE_HEIGHT:
            ptTextEdit->m_LineHeight= value;
            ptTextEdit->m_init_LineCount = ((ptTextEdit->base.bottom-ptTextEdit->base.top+1-ptTextEdit->m_Margin_Top-ptTextEdit->m_Margin_Bottom)/ptTextEdit->m_LineHeight);
            ret = STATUS_OK;
            break;

        case WORD_WRAP:
            if((ptTextEdit->base.style & TEXTEDIT_SINGLE_LINE))
                ret = STATUS_ERR;
            else
            {
                if(value<0) value = 0;
                else if(value>1)
                value = 1;
                ret = STATUS_OK;
                ptTextEdit->m_bWordWrap= (BYTE)value;
            }
            break;

        case DYNAMIC_SIZE:
            if((ptTextEdit->base.style & TEXTEDIT_SINGLE_LINE))
                ret = STATUS_ERR;
            else
            {
                ret = STATUS_OK;
                ptTextEdit->m_DynamicMax= value;
            }
            break;

        case PASSWORD:
            if(!(ptTextEdit->base.style & TEXTEDIT_SINGLE_LINE))
                ret = STATUS_ERR;
            else
            {
                if(value<0) value = 0;
                else if(value>1)
                value = 1;
                ret = STATUS_OK;
                ptTextEdit->m_bPassword= (BYTE)value;
            }
            break;

        case CHAR_GAP:
             ret = STATUS_OK;
             ptTextEdit->m_CharGap= value;
             break;

        case LEFT_MARGIN:
            if(value<0)
            {
                ret = STATUS_ERR;
                break;
            }
             ret = STATUS_OK;
             ptTextEdit->m_Margin_Left = value;
             break;

        case RIGHT_MARGIN:
            if(value<0)
            {
                ret = STATUS_ERR;
                break;
            }
             ret = STATUS_OK;
             ptTextEdit->m_Margin_Right = value;
             break;

        case TOP_MARGIN:
            if(value<0)
            {
                ret = STATUS_ERR;
                break;
            }
             ret = STATUS_OK;
             ptTextEdit->m_Margin_Top = value;
             ptTextEdit->m_init_LineCount = ((ptTextEdit->base.bottom-ptTextEdit->base.top+1-ptTextEdit->m_Margin_Top-ptTextEdit->m_Margin_Bottom)/ptTextEdit->m_LineHeight);
             break;

        case BOTTOM_MARGIN:
            if(value<0)
            {
                ret = STATUS_ERR;
                break;
            }
             ret = STATUS_OK;
             ptTextEdit->m_Margin_Bottom = value;
             ptTextEdit->m_init_LineCount = ((ptTextEdit->base.bottom-ptTextEdit->base.top+1-ptTextEdit->m_Margin_Top-ptTextEdit->m_Margin_Bottom)/ptTextEdit->m_LineHeight);
             break;

        default :
            ret = STATUS_ERR;
            break;

    }
    _guiAdjustText( hTextEdit);
    guiExitWCS();
	return ret;
}

//==================================================================
DLL_EXP(short)   guiTextEdit_GetProperty( HNDL hTextEdit, BYTE type)
{
	TTEXTEDIT *ptTextEdit;
    short ret = -1;

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

	ptTextEdit=(TTEXTEDIT *)hTextEdit;

    if(ptTextEdit->base.checkFlag!=GUI_CONTROL_CHECK_FLAG)
	{
	    return STATUS_ERR;
	}

    switch(type)
    {
        case TEXT_LENGTH:
            ret = ptTextEdit->m_TxtLength;
            break;

        case MAX_LENGTH:
            ret = ptTextEdit->m_MaxLength;
            break;

        case CARET_INDEX:
            ret = ptTextEdit->m_CursorPos;
            break;

        case TEXT_SCROLL:
            ret = ptTextEdit->m_bScrollEnable;
            break;

        case READ_ONLY:
            ret = ptTextEdit->m_bReadOnly;
            break;

        case UNDERLINE_TYPE:
            ret = ptTextEdit->m_UnderlineStyle;
            break;

        case TEXT_ALIGNMENT:
            if(!(ptTextEdit->base.style & TEXTEDIT_SINGLE_LINE))
                ret = -1;
            else
                ret = ptTextEdit->m_Alignment;
            break;

        case LINE_COUNT:
            ret = ptTextEdit->m_LineCount;
            break;

        case LINE_HEIGHT:
            ret = ptTextEdit->m_LineHeight;
            break;

        case WORD_WRAP:
            if((ptTextEdit->base.style & TEXTEDIT_SINGLE_LINE))
                ret = -1;
            else
                ret = ptTextEdit->m_bWordWrap;
            break;

        case DYNAMIC_SIZE:
            if((ptTextEdit->base.style & TEXTEDIT_SINGLE_LINE))
                ret = -1;
            else
                ret = ptTextEdit->m_DynamicMax;
            break;

        case PASSWORD:
           if(!(ptTextEdit->base.style & TEXTEDIT_SINGLE_LINE))
                ret = -1;
            else
                ret = ptTextEdit->m_bPassword;
            break;

        case CHAR_GAP:
             ret = ptTextEdit->m_CharGap;
             break;

         case LEFT_MARGIN:
             ret = ptTextEdit->m_Margin_Left;
             break;

        case RIGHT_MARGIN:
             ret = ptTextEdit->m_Margin_Right;
             break;

        case TOP_MARGIN:
             ret = ptTextEdit->m_Margin_Top;
             break;

        case BOTTOM_MARGIN:
             ret = ptTextEdit->m_Margin_Bottom ;
             break;

        default :
            ret = -1;
            break;

    }
	return ret;
}

//=========================================================
DLL_EXP(STATUS)   guiTextEdit_AddText( HNDL hTextEdit, const BYTE *pszText )
{
	TTEXTEDIT  * ptTextEdit;

	if(hTextEdit == NULL)
	{
    return STATUS_ERR;
    }
	guiEnterWCS();
    if(pszText==0 || *pszText == 0)
    {
    	guiExitWCS();
	    return STATUS_ERR;
    }
	ptTextEdit=(TTEXTEDIT *)hTextEdit;
    if(ptTextEdit->base.checkFlag!=GUI_CONTROL_CHECK_FLAG)
	{
		guiExitWCS();
	    return STATUS_ERR;
	}
    if(ptTextEdit->m_bReadOnly)
    {
		guiExitWCS();
	    return STATUS_ERR;
	}
    if(STATUS_ERR == guiTextEdit_InsertText(hTextEdit, ptTextEdit->m_TxtLength,pszText))
    {
		guiExitWCS();
	    return STATUS_ERR;
	}
	if(guiControl_IsVisible(hTextEdit))
        _guiTextEdit_Show( hTextEdit );
	guiExitWCS();
	return STATUS_OK;
}

//==========================================================
DLL_EXP(STATUS)  guiTextEdit_InsertText( HNDL hTextEdit, WORD wPos, const BYTE *pszText )
{
	TTEXTEDIT  * ptTextEdit;
    short      nStrlen,n;
    WORD       _wPos;
    BYTE       *pStr;

	if(hTextEdit == NULL)
	{
        return STATUS_ERR;
    }
    if(pszText==0 || *pszText == 0)
    {
        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;
	}
    nStrlen = strlen((char *)pszText);
    pStr =(BYTE *)pszText;
    for(n=0;n<wPos,*pStr;pStr++)
    {
         if(*pStr>0x80) n++;
    }
    if(n%2)
        wPos++;
    pStr =(BYTE *)pszText;
    if(nStrlen>(ptTextEdit->m_MaxLength-ptTextEdit->m_TxtLength))
    {
        guiExitWCS();
        return STATUS_ERR;
    }
    for(_wPos = wPos;_wPos <(wPos+nStrlen) && *pStr;_wPos++)
    {
        _guiTextEdit_InsertChar(hTextEdit ,pStr,_wPos);
        pStr++;
    }
	guiExitWCS();
	if(guiControl_IsVisible(hTextEdit))
        _guiTextEdit_Show( hTextEdit );
	return STATUS_OK;
}

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

    if(hTextEdit==NULL)
        return STATUS_ERR;
	guiEnterWCS();
    ptTextEdit=(TTEXTEDIT *)hTextEdit;

	if(ptTextEdit->base.checkFlag!=GUI_CONTROL_CHECK_FLAG)
	{
		guiExitWCS();
	    return STATUS_ERR;
	}

    memset( ptTextEdit->m_pText,0,ptTextEdit->m_MaxLength+1);

    ptTextEdit->m_LineCount = 1;
    ptTextEdit->m_CursorPos = 0;
    ptTextEdit->m_MarkBegin = -1;
    ptTextEdit->m_MarkEnd = -1;
    ptTextEdit->m_TopLineNum = 0;
    ptTextEdit->m_TxtLength = 0;
	ptTextEdit->m_bScrollActive  = 0;
	//ptTextEdit->m_bScrollEnable = 0;
	ptTextEdit->m_CursorLineNum = 0;

	if(guiControl_IsVisible(hTextEdit))
        _guiTextEdit_Show( hTextEdit );

	guiExitWCS();
	return STATUS_OK;
}

//==========================================================
DLL_EXP(char*)   guiTextEdit_GetText( HNDL hTextEdit, char *pBuff, WORD wTextLen) //ok
{
	TTEXTEDIT  *ptTextEdit;

	if(hTextEdit == NULL || pBuff==0)
		return NULL;

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

⌨️ 快捷键说明

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