一些技巧(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);        
}
目录
相关文章
|
3月前
|
存储 自然语言处理 搜索推荐
【颠覆你的数字生活!】探索OS Copilot——那款让你瞬间变身超级用户、编程如呼吸般自然、文件管理如同魔法般的神奇操作系统辅助神器!
【8月更文挑战第8天】OS Copilot是一款新兴的操作系统辅助软件,通过智能化手段简化电脑使用,从办公到开发全面赋能。安装简易,启动即有引导教程。其智能命令建议功能,可在命令行输入时提供后续选项及其说明,特别适合Linux用户。内置代码片段生成器,根据需求或代码框架自动生成代码,大幅提升开发效率。文件管理助手支持批量操作且可预览结果,降低误操作风险。任务自动化功能便于设置重复性工作流程,如定时备份。搜索功能强大,支持自然语言查询。尽管尚有改进空间,OS Copilot已是提升生产力的得力助手。
110 5
|
6月前
|
存储 缓存 算法
【Cmake 增加编译参数 】cmake增加编译参数和预处理指令的几种方法
【Cmake 增加编译参数 】cmake增加编译参数和预处理指令的几种方法
271 1
|
6月前
|
编解码 编译器 API
【C++ 内联函数和库】了解函数导出至库的原理以及其中内联函数的处理
【C++ 内联函数和库】了解函数导出至库的原理以及其中内联函数的处理
160 0
|
11月前
|
安全 Cloud Native Unix
Copa:无需重建镜像,直接修补容器漏洞
Copa:无需重建镜像,直接修补容器漏洞
201 0
|
机器学习/深度学习 网络协议 数据安全/隐私保护
远程访问本地jupyter notebook服务 - 无公网IP端口映射
远程访问本地jupyter notebook服务 - 无公网IP端口映射
207 0
|
API
《FFmpeg原理》第一版完成了
《FFmpeg原理》是一本音视频入门书籍,第一版是以 FFmpeg-n4.4.1 源码来分析写作的。
389 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
4606 1
|
缓存 运维 前端开发
面向云游戏的IaaS vGPU技术服务指南
本文作者:阿里云-全球技术服务部-技术服务专家——李斯达(花名木仔,网名StatLee) 全文15127字,精读时长15分钟,如需转载,请联系笔者
面向云游戏的IaaS vGPU技术服务指南
|
C# Windows
触摸屏:屏幕键盘(虚拟键盘)解决方案
原文:触摸屏:屏幕键盘(虚拟键盘)解决方案  最近需要在win XP系统的工控机上进行程序的开发,工控机是电阻式触摸屏,需要在上面使用触摸键盘,使工控机可以脱离鼠标和键盘独立运行程序。调研后得到一系列的解决方案,mark如下: (1)自己在程序中开发虚拟键盘 这个是最先想到的,本人用C#进行开发,所以只关注C#相关的虚拟键盘开发。
2562 0