一些技巧(13)

简介: //取得输入法DWORD dwSize;DWORD dwi;HKL hKL=0;HKL *lphkl;CString Buff;dwSize=GetKeyboardLayoutList(0,N...
//取得输入法
DWORD dwSize;
DWORD dwi;
HKL hKL=0;
HKL *lphkl;
CString Buff;
dwSize=GetKeyboardLayoutList(0,NULL);
lphkl=(HKL*)GlobalAlloc(GPTR,dwSize*sizeof(DWORD));
if(!lphkl)
   return NULL;
GetKeyboardLayoutList(dwSize,lphkl);
for(dwi=0;dwi<dwSize;dwi++)
{
    char szFile[32];
    HKL hKLTemp=*(lphkl+dwi);
    ImmGetIMEFileName(hKLTemp,szFile,sizeof(szFile));//获得输入法的ime文件
    if(ImmIsIME(*(lphkl+dwi))==1)//是中文输入法
    {
        int RCount=ImmGetDescription(*(lphkl+dwi),(LPTSTR)(LPCTSTR)Buff,255);//取得所有输入法
    }
}
GlobalFree((HANDLE)lphkl);
==========================================================================================
开发输入法程序
输入法程序(IME)其实就是一种动态链接库(DLL),在动态链接库中导出下列函数:
BOOL WINAPI ImeInquire(LPIMEINFO lpIMEInfo,LPTSTR lpszUIClass,LPCTSTR lpszOption)return TRUE
BOOL WINAPI ImeConfigure(HKL hKL,HWND hWnd, DWORD dwMode, LPVOID lpData)return TRUE
DWORD WINAPI ImeConversionList(HIMC hIMC,LPCTSTR lpSource,LPCANDIDATELIST lpCandList,DWORD dwBufLen,UINT uFlag)return 0
BOOL WINAPI ImeDestroy(UINT uForce)return TRUE
LRESULT WINAPI ImeEscape(HIMC hIMC,UINT uSubFunc,LPVOID lpData)return TRUE
BOOL WINAPI ImeProcessKey(HIMC hIMC,UINT vKey,LPARAM lKeyData,CONST LPBYTE lpbKeyState)return TRUE
BOOL WINAPI ImeSelect(HIMC hIMC, BOOL fSelect)return TRUE
BOOL WINAPI ImeSetActiveContext(HIMC hIMC,BOOL fFlag)return TRUE
UINT WINAPI ImeToAsciiEx (UINT uVKey,UINT uScanCode,CONST LPBYTE lpbKeyState,LPDWORD lpdwTransKey,UINT fuState,HIMC hIMC)return r
BOOL WINAPI NotifyIME(HIMC hIMC,DWORD dwAction,DWORD dwIndex,DWORD dwValue)return TRUE
BOOL WINAPI ImeRegisterWord(LPCTSTR lpRead, DWORD dw, LPCTSTR lpStr)return TRUE
BOOL WINAPI ImeUnregisterWord(LPCTSTR lpRead, DWORD dw, LPCTSTR lpStr)return TRUE
UINT WINAPI ImeGetRegisterWordStyle(UINT nItem, LPSTYLEBUF lp)return 0
UINT WINAPI ImeEnumRegisterWord(REGISTERWORDENUMPROC lpfn, LPCTSTR lpRead, DWORD dw, LPCTSTR lpStr, LPVOID lpData)return 0
BOOL WINAPI ImeSetCompositionString(HIMC hIMC, DWORD dwIndex, LPCVOID lpComp, DWORD dwComp, LPCVOID lpRead, DWORD dwRead)return FALSE
LRESULT WINAPI UIWndProc(HWND,UINT,WPARAM,LPARAM)return 0
示例D:/My Documents/Visual Studio Projects/freepy
==========================================================================================
.DEF文件为 链接器-输入-模块定义文件
.lib 链接器-高级-导入库
.tlb MIDL-输出-类型库
==========================================================================================
字体窗体
CClientDC dc(this);
HDC hDC;
CFont mFont;    
hDC = ::GetDC(this->m_hWnd);    
//创建字体
VERIFY(mFont.CreateFont(
    200, 50, 0, 0, FW_HEAVY, TRUE, FALSE, 
    0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,        
    CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,             
    DEFAULT_PITCH | FF_SWISS, "宋体"));                  
if (hDC!=NULL)
{
    //开始记录窗体轮廓路径
    dc.BeginPath();        
    //设置背景为透明模式,这句话是必须有的。
    dc.SetBkMode(TRANSPARENT);        
    CFont * pOldFont;
    pOldFont = dc.SelectObject( &mFont );
    dc.TextOut(0, 0, "VCKbase");    
    dc.SelectObject( pOldFont );
    mFont.DeleteObject();
    //结束记录窗体轮廓路径
    dc.EndPath();
    //把所记录的路径转化为窗体轮廓句柄
    HRGN m_wndRgn = ::PathToRegion(dc);
    //赋予窗体指定的轮廓形状
    this->SetWindowRgn(m_wndRgn, TRUE);        
}
目录
相关文章
|
4月前
|
存储 自然语言处理 搜索推荐
【颠覆你的数字生活!】探索OS Copilot——那款让你瞬间变身超级用户、编程如呼吸般自然、文件管理如同魔法般的神奇操作系统辅助神器!
【8月更文挑战第8天】OS Copilot是一款新兴的操作系统辅助软件,通过智能化手段简化电脑使用,从办公到开发全面赋能。安装简易,启动即有引导教程。其智能命令建议功能,可在命令行输入时提供后续选项及其说明,特别适合Linux用户。内置代码片段生成器,根据需求或代码框架自动生成代码,大幅提升开发效率。文件管理助手支持批量操作且可预览结果,降低误操作风险。任务自动化功能便于设置重复性工作流程,如定时备份。搜索功能强大,支持自然语言查询。尽管尚有改进空间,OS Copilot已是提升生产力的得力助手。
114 5
|
7月前
|
编解码 编译器 API
【C++ 内联函数和库】了解函数导出至库的原理以及其中内联函数的处理
【C++ 内联函数和库】了解函数导出至库的原理以及其中内联函数的处理
187 0
|
安全 Cloud Native Unix
Copa:无需重建镜像,直接修补容器漏洞
Copa:无需重建镜像,直接修补容器漏洞
224 0
|
机器学习/深度学习 网络协议 数据安全/隐私保护
远程访问本地jupyter notebook服务 - 无公网IP端口映射
远程访问本地jupyter notebook服务 - 无公网IP端口映射
217 0
|
API
《FFmpeg原理》第一版完成了
《FFmpeg原理》是一本音视频入门书籍,第一版是以 FFmpeg-n4.4.1 源码来分析写作的。
399 0
《FFmpeg原理》第一版完成了
|
JavaScript Ubuntu Java
零基础开发 nginx 模块
推荐学习资料: * nginx 开发指南: http://nginx.org/en/docs/dev/development_guide.html * nginx 动态模块编译博客文章: https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/ * nginx 源码: https://github.com/nginx
4644 1
|
程序员 C++ Windows
模拟键盘按键 自动输入文字
对于程序员来说,键盘上的每个按键都一样,无非是不同按键产生的键盘扫描码不同。在不同的操作系统下,键盘扫描码常常被转换为不同的编码以方便应用程序调用,比如在DOS系统下的ASCII码,在Windows系统下的虚拟键盘码等等。
|
缓存 运维 前端开发
面向云游戏的IaaS vGPU技术服务指南
本文作者:阿里云-全球技术服务部-技术服务专家——李斯达(花名木仔,网名StatLee) 全文15127字,精读时长15分钟,如需转载,请联系笔者
面向云游戏的IaaS vGPU技术服务指南
|
Windows
Win7 64位系统,使用(IME)模式VS2010 编写 和 安装 输入法 教程(1)
原文:Win7 64位系统,使用(IME)模式VS2010 编写 和 安装 输入法 教程(1) 首先感谢:http://blog.
1853 0