📄 uitextedit.c
字号:
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 + -