在enWin(ucGui)中EDIT控件在數值模式(十進制/十六進制/二進制/浮點數)下編輯是,沒法使用BackSpace鍵進行退格,主要涉及到的函數有: 函數
EDIT_SetBinMode() ui
EDIT_SetDecMode() spa
EDIT_SetHexMode() blog
EDIT_SetFloatMode() 接口
將Edit控件一旦使用此類的模式是將沒法BackSpace鍵進行退格刪除,解決辦法以下,響應Edit控件的按鍵消息,當收到BackSpace鍵時強制將光標退到上一個字符,那麼就使用到接口函數即:獲取當前的字符光標位置和設置指定字符位置光標。 get
EDIT_GetCursorCharPos() it
EDIT_SetCursorAtChar() sed
代碼: 二進制
/********************************************************************* im
* cbEdit 編輯控件回調
*/
static void cbEdit(WM_MESSAGE * pMsg) {
switch (pMsg->MsgId) {
case WM_KEY:
switch (((WM_KEY_INFO *)(pMsg->Data.p))->Key){
case GUI_KEY_ENTER:
price = EDIT_GetFloatValue(widgetsItemBuf[0]);
WM_SetFocus(widgetsItemBuf[1]);
return;
case GUI_KEY_BACKSPACE:
if(((WM_KEY_INFO *)(pMsg->Data.p))->PressedCnt == 0)
EDIT_SetCursorAtChar(widgetsItemBuf[0],EDIT_GetCursorCharPos(widgetsItemBuf[0]) - 1);
break;
}
break;
}
EDIT_Callback(pMsg);
}
運行效果: