BOOL WINAPI ImeSelect(HIMC hIMC,BOOL fSelect) { MyLoadCilentDLLFun(); // 在切换输入法时判断是否需要加载客户DLL if (!hIMC) { return (FALSE); } if (fSelect==TRUE && LoadNextWhenActive!=0) { //ActivateKeyboardLayout((HKL)HKL_NEXT,0); // 不要在该接口中使用此函数切换到下一个输入法,否则函数返回时输入法又会切换回去 MyGenerateMessage(hIMC,WM_INPUTLANGCHANGEREQUEST,1,(LPARAM)HKL_NEXT); } return TRUE; }
BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) { switch(fdwReason) { case DLL_PROCESS_ATTACH: if(!ImeClass_Register(hinstDLL)) return FALSE; // DLL加载时注册必须的UI基本窗口类 MyLoadCilentDLLFun(); break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; case DLL_PROCESS_DETACH: ImeClass_Unregister(hinstDLL); // DLL退出时注销注册的窗口类 if (CilentDLL!=NULL && OnloadDllWhenExit==0) { FreeLibrary(CilentDLL); // 输入法退出时卸载客户DLL } break; default: break; } return true; }