|
本帖最后由 橙色八月 于 2013-4-9 16:44 编辑
使用炫彩 界面库的时候,发现创建的编辑框不能编辑,跟踪了一下,发现当我按键的时候,进入Edit_OnEventKeyDown这个回调函数,但是这个回调函数没有作处理就走了。所以我按键之后没有反应
BOOL CALLBACK Edit_OnEventKeyDown(HELE hEle,HELE hEventEle,WPARAM wParam,LPARAM lParam)
{
if(hEle!=hEventEle)
return FALSE;
//XTRACE("keydown %d",wParam);
switch(wParam)
{
case 46: //Delete
Edit_CharDeleteKey(hEle);
break;
case 36: //Home
// MoveCaretBegin();
break;
case 35: //End
// MoveCaretEnd();
break;
case VK_LEFT: //37: //左
Eidt_MouseCreatLeft(hEle); //移动插入符向左←
break;
case VK_UP: //38: //上
Eidt_MouseCreatTop(hEle);
break;
case VK_RIGHT: //39: //右
Eidt_MouseCreatRight(hEle);
break;
case VK_DOWN: //40: //下
Eidt_MouseCreatBottom(hEle);
break;
}
return TRUE;
}
但是我看到了Edit_OnEventChar这个函数,但是按键 的时候并没有进入到这里面,而且这个函数对中文的输入,和一些特殊键支持的都不好,不知道楼主是需要开发者自己写着两个函数吗?不知道有没有写好的啊,求共享。谢谢
BOOL CALLBACK Edit_OnEventChar(HELE hEle,HELE hEventEle,WPARAM wParam,LPARAM lParam)
{
if(hEle!=hEventEle)
return FALSE;
edit_ *pEdit=EDIT(hEle);
if(pEdit->bDown) return TRUE;
if(VK_TAB==wParam) return TRUE; //TAB按键
if(VK_ESCAPE==wParam) return TRUE;
if(pEdit->bReadOnly) return TRUE; //只读
if( 0x8000 & GetKeyState(VK_CONTROL))
{
if(1==wParam) //全选
{
XEdit_Menu_SelectAll(hEle);
}else if(3==wParam) //复制
{
XEdit_Menu_Copy(hEle);
}else if(22==wParam) //粘贴
{
XEdit_Menu_Paste(hEle);
}
return TRUE;
}
wchar_t ch[2]={0};
ch[0]=wParam;
//XTRACEW(L"char=%c \n",wParam);
if(VK_BACK==wParam) //退格
{
Edit_CharBackspace(hEle);
// XTRACEW(L"wchar=退格 \n",ch);
}else if(VK_RETURN==wParam) //回车换行
{
if(pEdit->bMoreLine)
Edit_CharEnter(hEle);
// XTRACEW(L"wchar=回车");
}else
{
Edit_Char(hEle,wParam);
// XTRACEW(L"wchar=%s \n",ch);
}
return TRUE;
}
|
|