|

楼主 |
发表于 2018-8-8 16:11:17
|
显示全部楼层
我现在的输入法是独立的 WM_HBKWIN 这个类型的窗口
我吧我的大概代码贴上来你看看吧,看看具体该如何修改?
void CreateWindowSKBApp(void) //创建主窗口,初始化只调用一次
{
WM_HWIN hFrame;
KEY_PAD_Memory( 0 ); //申请内存, 内存一旦申请并不会释放
memset(keypad_dev, 0, sizeof(KEYPADStructTypeDef));
WM_SetCallback(WM_HBKWIN, _cbBk); //是指背景窗口回调函数
//设置keypad所使用的按钮的皮肤
BUTTON_SetDefaultSkin(_DrawSkinFlex_BUTTON); //设置BUTTON的皮肤
//创建 键盘 子窗口
keypad_dev->hKeypad = WM_CreateWindowAsChild(keypad_dev->xpos,keypad_dev->ypos,keypad_dev->width,keypad_dev->height, WM_HBKWIN, WM_CF_SHOW | WM_CF_STAYONTOP, _cbKeyPad, 0);
WM_MOTION_SetMoveable(keypad_dev->hKeypad, WM_CF_MOTION_X | WM_CF_MOTION_Y, 1); //移动启动
// WM_HideWindow(keypad_dev.hKeypad); //隐藏输入法
{
// 下面是输入法显示测试
// 输入法显示测试 ,如果不使用,吧相应的 多行文本函数屏蔽即可
//设置notepad属性
BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
FRAMEWIN_SetDefaultTextAlign(GUI_TA_HCENTER);
//创建FRAME窗口
hFrame = FRAMEWIN_CreateEx(0, 0, 480, 240, WM_HBKWIN, WM_CF_SHOW, 0, 0, "SWS Notepad", 0);
FRAMEWIN_SetTextColor(hFrame, GUI_YELLOW);
FRAMEWIN_SetFont(hFrame, &GUI_Font20_ASCII);
FRAMEWIN_SetClientColor(hFrame, GUI_WHITE);
//创建一个multi edit(多行文本小工具)小工具
hMulti = MULTIEDIT_CreateEx(0, 0, 0, 0, WM_GetClientWindow(hFrame), WM_CF_SHOW, 0, GUI_ID_MULTIEDIT0, 100, NULL);
MULTIEDIT_EnableBlink(hMulti,500,1); //开启光标,周期500ms
MULTIEDIT_SetInsertMode(hMulti,1); //开启插入模式
MULTIEDIT_SetFont(hMulti, &GUI_FontHZ24);
WM_SetFocus(hMulti);
}
}
例如我有四个窗口如下:
WM_HWIN hWin1, hWin2, hWin3, hWin4; //相应的窗口句柄
uint8_t WinFlag =0; //在相应需要显示里面设置值,=0表示没有需要显示的输入窗口
如果是 hWin2 需要输入相关数据
WinFlag = 2;
// 这个是检测到有需要显示的内容时,就直接在 多行文本里面显示了
if(keypad_dev->cur_hz != NULL)
{
// 如果要发送什么的信息,应该是在这个里面进行吧,但是如果是有多个 控件窗口需要显示输入的内容,那这个地方还需要做个什么标志来判断是哪个窗口需要发送信息 ?
//然后吧对应的信息发送出去吗 ??
if(WinFlag == 2)
{
Msg.MsgId = CHANGE_CHINESE_HWIN2;
Msg.hWinSrc = hWin2;
WM_SendMessage(hWin2,&Msg);
}
else if(WinFlag == 3)
{
Msg.MsgId = CHANGE_CHINESE_HWIN3;
Msg.hWinSrc = hWin3;
WM_SendMessage(hWin3,&Msg);
}
// USART_OS_Printf("chinese %s\r\n", keypad_dev->cur_hz); //串口输出 汉字字符 测试
// MULTIEDIT_AddText(hMulti,(const char*)keypad_dev->cur_hz); //在多行文本中显示选中的汉字 测试
}
|
|