minigui源码讲解------(一)

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  回调函数

}

MiniSKBWinProc  

1.Create_MiniSoftKey(hWnd);

HWND hSk1, hSk2, hSk3, hSk4, hSk5, hSk6, hSk7, hSk8, hSk9, hSk0, hSkclear, hSkok;

对这些全局变量进行赋值

猜你喜欢

转载自blog.csdn.net/qq_1335857320/article/details/82120447