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