minisoftkeyboard 作为参考
GUI_main.c
static int InitGui()
SKBWindow(HWND_DESKTOP); /******softkeyboard***/
MiniSKBWindow(HWND_DESKTOP); /******minisoftkeyboard***/
GBIMEWindow(HWND_DESKTOP);//添加汉语输入法
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Hzinput.c 输入法的接口文件
HWND SKBWindow(HWND hosting)
{
IME_INFO skb_info;
pthread_attr_t new_attr;
sem_init(&skb_info.wait, 0, 0);
pthread_attr_init(&new_attr);
pthread_attr_setdetachstate(&new_attr, PTHREAD_CREATE_DETACHED);
pthread_create(&skbthread, &new_attr, start_skb, &skb_info);
pthread_attr_destroy(&new_attr);
sem_wait(&skb_info.wait);
sem_destroy(&skb_info.wait);
return skb_info.hwnd;
}
设置相关的属性,进行创建一个线程
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
创建窗口 注明:这个窗口是独立于主窗口外的
static void *start_miniskb(void *data)
{
核心部分: 初始化窗口大小
pCreateInfo->lx = GetGDCapability(HDC_SCREEN, GDCAP_MAXX) - 400;
pCreateInfo->ty = GetGDCapability(HDC_SCREEN, GDCAP_MAXY) - 160;
pCreateInfo->rx = GetGDCapability(HDC_SCREEN, GDCAP_MAXX) - 320;
pCreateInfo->by = GetGDCapability(HDC_SCREEN, GDCAP_MAXY) - 53;
MiniSKBWinProc 回调函数
}