IME=fals禁止ime是什么意思中文意思

> 常见的几种禁止批改输入框
常见的几种禁止批改输入框
sunshen1986 & &
发布时间: & &
浏览:51 & &
回复:0 & &
悬赏:0.0希赛币
常见的几种禁止修改输入框
&INPUT TYPE = text STYLE = "ime-mode:disabled" & 即可禁止输入法js形式:active 代表输入法为中文inactive 代表输入法为英文auto 代表打开输入法 (默认)disable 代表关闭输入法&INPUT onfocus=" this.style.imeMode='active' " /&&INPUT onfocus=" this.style.imeMode='inactive' " /&&INPUT onfocus=" this.style.imeMode='auto' " /&&INPUT onfocus=" this.style.imeMode='disabled' " /&禁止input 粘贴:&input id=VC class="xinput" maxlength=4 size="5" onkeydown="fnKeyDown(event);" onfocus="this.select()" onclick="this.select()" onpaste="return false" ondrop="return false" ondragenter="" ondragstart="return false" onkeypress="return keyDigt(event)" value="" /&ondragstart="return false"&& 禁止鼠标在网页上拖动ondragenter 当用户拖曳对象到一个合法拖曳目标时在目标元素上触发onpaste="return false" 禁止粘贴& 1 通过js实现-onfocus="this.blur()"&input type="text" value="fisker" onclick="alert(this.value);" onfocus="this.blur()" /&&&& 输入框无法获得焦点,不能编辑表单可以获得值,可以复制,蛮奇怪的,都选住了,还没有获得焦点?&&& 2 readonly&input type="text" value="fisker" onclick="alert(this.value);" readonly /&&&& 输入框只读。不能编辑,同样表单可以获得值,也可以复制。&&& 3 disabled&input type="text" value="fisker" onclick="alert(this.value);" disabled /&&&& 输入框灰色,不能编辑,可以用JS改变或获得其值,但提交时并不提交该值。&&& 1和2效果差不多。视觉上,第一个,点击的时候光标会闪烁一下。 第三个,灰色的输入框看起来还是不喜欢。
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&一个中文输入的类 -
sixisix(风戒)&&
一个中文输入的类
不想让ime显示默认的窗口,只想用它的转换和选字功能,看过拿铁游戏论坛上的一个兄弟的一些代码,修正了一些我认为的bug,加入了一组控制函数,使得程序中可以显示一些button,玩家可以不必用热键就能切换输入法、全角/半角,中/英文标点。
//不知道这个能不能解决缩进的问题
#pragma&comment&(&lib,&&imm32.lib&&)
#include&&windows.h&
#include&&imm.h&
class&CIme{
&&& bool&g_bI&&&&&&&&&&&&&&&&&&&&
//ime允许标志
char&g_szCompStr[&MAX_PATH&];&&& //存储转换后的串
char&g_szCompReadStr[&MAX_PATH&];//存储输入的串
char&g_szCandList[&MAX_PATH&];&& //存储整理成字符串选字表
int&g_nImeC&&&&&&&&&&&&&&&
//存储转换后的串中的光标位置
CANDIDATELIST&*g_lpCandL&&&& //存储标准的选字表
char&g_szImeName[&64&];&&&&&&&&&
//存储输入法的名字
bool&g_bImeS&&&&&&&&&&&&&&&
//全角标志
bool&g_bImeS&&&&&&&&&&&&&&
//中文标点标志
void&ConvertCandList(&CANDIDATELIST&*pCandList,&char&*pszCandList&);
//将选字表整理成串
CIme()&:&g_lpCandList(&NULL&){&DisableIme();&} //通过DisableIme初始化一些数据
DisableIme();
if(&g_lpCandList&)
&&&&&&&&&&&
GlobalFree(&(HANDLE)g_lpCandList&);
&&&&&&&&&&&
g_lpCandList&=&NULL;
//控制函数
void&DisableIme();&&&&&&&&&
//关闭并禁止输入法,如ime已经打开则关闭,此后玩家不能用热键呼出ime
void&EnableIme();&&&&&&&&&&
//允许输入法,此后玩家可以用热键呼出ime
void&NextIme();&&&&&&&&&&&&
//切换到下一种输入法,必须EnableIme后才有效
void&SharpIme(&HWND&hWnd&); //切换全角/半角
void&SymbolIme(&HWND&hWnd&);//切换中/英文标点
//状态函数
char*&GetImeName();&&&&&&&&
//得到输入法名字,如果当前是英文则返回NULL
bool&IfImeSharp();&&&&&&&&&
//是否全角
bool&IfImeSymbol();&&&&&&&&
//是否中文标点
void&GetImeInput(&char&**pszCompStr,&char&**pszCompReadStr,&int&*pnImeCursor,&char&**pszCandList&);
//得到输入法状态,四个指针任意可为NULL则此状态不回返回
//在pszCompStr中返回转换后的串
//在pszCompReadStr中返回键盘直接输入的串
//在pnImeCursor中返回szCompStr的光标位置
//在pszCandList中返回选字表,每项之间以\t分隔
//必须在消息中调用的函数,如果返回是true,则窗口函数应直接返回0,否则应传递给DefWindowProc
bool&OnWM_INPUTLANGCHANGEREQUEST();
bool&OnWM_INPUTLANGCHANGE(&HWND&hWnd&);
bool&OnWM_IME_SETCONTEXT(){&return&&}
bool&OnWM_IME_STARTCOMPOSITION(){&return&&}
bool&OnWM_IME_ENDCOMPOSITION(){&return&&}
bool&OnWM_IME_NOTIFY(&HWND&hWnd,&WPARAM&wParam&);
bool&OnWM_IME_COMPOSITION(&HWND&hWnd,&LPARAM&lParam&);
void&CIme::DisableIme()
while(&ImmIsIME(&GetKeyboardLayout(&0&)))
ActivateKeyboardLayout((&HKL&)HKL_NEXT,&0&);//如果ime打开通过循环切换到下一个关闭
g_szCompStr[&0&]&=&0;
g_szCompReadStr[&0&]&=&0;
g_nImeCursor&=&0;
g_szImeName[&0&]&=&0;
g_szCandList[&0&]&=&0;
void&CIme::EnableIme()
void&CIme::NextIme()
if(&!g_bIme&)
ActivateKeyboardLayout((&HKL&)HKL_NEXT,&0&);
void&CIme::SharpIme(&HWND&hWnd&)
ImmSimulateHotKey(&hWnd,&IME_CHOTKEY_SHAPE_TOGGLE&);
void&CIme::SymbolIme(&HWND&hWnd&)
ImmSimulateHotKey(&hWnd,&IME_CHOTKEY_SYMBOL_TOGGLE&);
void&CIme::ConvertCandList(&CANDIDATELIST&*pCandList,&char&*pszCandList&)
//转换CandidateList到一个串,\t分隔每一项
unsigned&int&i;
if(&pCandList-&dwCount&& pCandList-&dwSelection&)
pszCandList[&0&]&=&0;
//待选字序号超出总数,微软拼音第二次到选字表最后一页后再按PageDown会出现这种情况,并且会退出选字状态,开始一个新的输入
//但微软拼音自己的ime窗口可以解决这个问题,估计微软拼音实现了更多的接口,所以使用了这种不太标准的数据
//我现在无法解决这个问题,而且实际使用中也很少遇到这种事,而且其它标准输入法不会引起这种bug
//非标准输入法估计实现的接口比较少,所以应该也不会引起这种bug
for(&i&=&0;&(&i&& pCandList-&dwCount&-&pCandList-&dwSelection&)&&(&i&&
pCandList-&dwPageSize&);&i++&)
*pszCandList++&=&(&i&%&10&!=&9&)?&i&%&10&+&'1'&:&'0';//每项对应的数字键
*pszCandList++&=&'.';//用'.'分隔
strcpy(&pszCandList,&(char*)pCandList
+&pCandList-&dwOffset[&pCandList-&dwSelection&+&i&]&);//每项实际的内容
pszCandList&+=&strlen(&pszCandList&);
*pszCandList++&=&'\t';//项之间以'\t'分隔
*(&pszCandList&-&1&)=&0;//串尾,并覆盖最后一个'\t'
bool&CIme::OnWM_INPUTLANGCHANGEREQUEST()
return&!g_bI//如果禁止ime则返回false,此时窗口函数应返回0,否则DefWindowProc会打开输入法
bool&CIme::OnWM_INPUTLANGCHANGE(&HWND&hWnd&)
HKL&hKL&=&GetKeyboardLayout(&0&);
if(&ImmIsIME(&hKL&))
HIMC&hIMC&=&ImmGetContext(&hWnd&);
ImmEscape(&hKL,&hIMC,&IME_ESC_IME_NAME,&g_szImeName&);//取得新输入法名字
DWORD&dwConversion,&dwS
ImmGetConversionStatus(&hIMC,&&dwConversion,&&dwSentence&);
g_bImeSharp&=&(&dwConversion&&&IME_CMODE_FULLSHAPE&)?&true&:&//取得全角标志
g_bImeSymbol&=&(&dwConversion&&&IME_CMODE_SYMBOL&)?&true&:&//取得中文标点标志
ImmReleaseContext(&hWnd,&hIMC&);
else//英文输入
g_szImeName[&0&]&=&0;
return&//总是返回false,因为需要窗口函数调用DefWindowProc继续处理
bool&CIme::OnWM_IME_NOTIFY(&HWND&hWnd,&WPARAM&wParam&)
HIMC&hIMC;
DWORD&dwConversion,&dwS
switch(&wParam&)
case&IMN_SETCONVERSIONMODE://全角/半角,中/英文标点改变
hIMC&=&ImmGetContext(&hWnd&);
ImmGetConversionStatus(&hIMC,&&dwConversion,&&dwSentence&);
g_bImeSharp&=&(&dwConversion&&&IME_CMODE_FULLSHAPE&)?&true&:&
g_bImeSymbol&=&(&dwConversion&&&IME_CMODE_SYMBOL&)?&true&:&
ImmReleaseContext(&hWnd,&hIMC&);
case&IMN_OPENCANDIDATE://进入选字状态
case&IMN_CHANGECANDIDATE://选字表翻页
hIMC&=&ImmGetContext(&hWnd&);
if(&g_lpCandList&)
&&&&&&&&&&&
GlobalFree(&(HANDLE)g_lpCandList&);
&&&&&&&&&&&
g_lpCandList&=&NULL;
} //释放以前的选字表
if(&dwSize&=&ImmGetCandidateList(&hIMC,&0,&NULL,&0&))
&&&&&&&&&&&
g_lpCandList&=&(LPCANDIDATELIST)GlobalAlloc(&GPTR,&dwSize&);
&&&&&&&&&&&
if(&g_lpCandList&)
&&&&&&&&&&&&&&&
ImmGetCandidateList(&hIMC,&0,&g_lpCandList,&dwSize&);
} //得到新的选字表
ImmReleaseContext(&hWnd,&hIMC&);
if(&g_lpCandList&)ConvertCandList(&g_lpCandList,&g_szCandList&);//选字表整理成串
case&IMN_CLOSECANDIDATE://关闭选字表
if(&g_lpCandList&)
&&&&&&&&&&&
GlobalFree(&(HANDLE)g_lpCandList&);
&&&&&&&&&&&
g_lpCandList&=&NULL;
g_szCandList[&0&]&=&0;
return&//总是返回true,防止ime窗口打开
bool&CIme::OnWM_IME_COMPOSITION(&HWND&hWnd,&LPARAM&lParam&) //输入改变
HIMC&hIMC;
hIMC&=&ImmGetContext(&hWnd&);
if(&lParam&&&GCS_COMPSTR&)
dwSize&=&ImmGetCompositionString(&hIMC,&GCS_COMPSTR,&(void*)g_szCompStr,&sizeof(&g_szCompStr&));
g_szCompStr[&dwSize&]&=&0;
}//取得szCompStr
if(&lParam&&&GCS_COMPREADSTR&)
dwSize&=&ImmGetCompositionString(&hIMC,&GCS_COMPREADSTR,&(void*)g_szCompReadStr,&sizeof(&g_szCompReadStr&));
g_szCompReadStr[&dwSize&]&=&0;
}//取得szCompReadStr
if(&lParam&&&GCS_CURSORPOS&)
g_nImeCursor&=&0xffff&&&ImmGetCompositionString(&hIMC,&GCS_CURSORPOS,&NULL,&0&);
}//取得nImeCursor
if(&lParam&&&GCS_RESULTSTR&)
unsigned&char&str[&MAX_PATH&];
dwSize&=&ImmGetCompositionString(&hIMC,&GCS_RESULTSTR,&(void*)str,&sizeof(&str&));//取得汉字输入串
str[&dwSize&]&=&0;
unsigned&char&*p&=&
while(&*p&)PostMessage(&hWnd,&WM_CHAR,&(WPARAM)(*p++),&1&);//转成WM_CHAR消息
ImmReleaseContext(&hWnd,&hIMC&);
return&//总是返回true,防止ime窗口打开
char*&CIme::GetImeName()
return&g_szImeName[&0&]?&g_szImeName&:&NULL;
bool&CIme::IfImeSharp() //是否全角
return&g_bImeS
bool&CIme::IfImeSymbol() //是否中文标点
return&g_bImeS
void&CIme::GetImeInput(&char&**pszCompStr,&char&**pszCompReadStr,&int&*pnImeCursor,&char&**pszCandList&)
&&& if(&pszCompStr&)
&&& *pszCompStr&=&g_szCompS
if(&pszCompReadStr&)
&&& *pszCompReadStr&=&g_szCompReadS
if(&pnImeCursor&)
&&& *pnImeCursor&=&g_nImeC
if(&pszCandList&)
*pszCandList&=&g_szCandL
//由于微软拼音实现了很多自己的东西,CIme和它的兼容性有些问题
//1、在函数ConvertCandList中所说的选字表的问题
//2、函数GetImeInput返回的szCompReadStr显然经过了加工而不是最初的键盘输入
//&&&它的每个可组合的输入占以空格补足的8byte,且新的不可组合的输入存为0xa1
//&&&我们可以在输入法名字中有子串&微软拼音&时,只显示末尾的一组8byte,如果有0xa1就什么都不显示,也可以直接用TextOut显示所有的
本站中所有文章以及图形均为作者本人、公司所有,本站所有资讯仅供参考,若有任何损失本站概不负责,请自行斟酌。
All Rights reserved.
This site is optimized for at least
resolution (hi-color) viewing
with a browser that supports style sheets.主题 : 本人小白,问个关于UITextField 的问题!为何调用了setDetachWithIME后,输入法没有关闭。
级别: 新手上路
可可豆: 75 CB
威望: 87 点
在线时间: 27(时)
发自: Web Page
本人小白,问个关于UITextField 的问题!为何调用了setDetachWithIME后,输入法没有关闭。&&&
为何调用了setDetachWithIME后,输入法没有关闭。忘大神给解答下 UITextField * textFieldSeek = dynamic_cast&UITextField*&(ulSeek-&getWidgetByName(&textFieldSeek&)); textFieldSeek-&setDetachWithIME(true);
级别: 新手上路
可可豆: 75 CB
威望: 87 点
在线时间: 27(时)
发自: Web Page
没人能解答下么。。。
级别: 风云使者
UID: 183396
发帖: 4878
可可豆: 5739 CB
威望: 5902 点
在线时间: 1806(时)
发自: Web Page
回 1楼(末日) 的帖子
正在帮你找人解决问题,请耐心等候
请勿再给我发私信啦~~
级别: 风云使者
UID: 183396
发帖: 4878
可可豆: 5739 CB
威望: 5902 点
在线时间: 1806(时)
发自: Web Page
static_cast&CCTextFieldTTF*&(textField-&getVirtualRenderer())-&detachWithIME();现在用这个方法关键盘
请勿再给我发私信啦~~
级别: 新手上路
可可豆: 75 CB
威望: 87 点
在线时间: 27(时)
发自: Web Page
回 3楼(hanrea) 的帖子
感谢版主大大的解答,我看到CCTextFieldTTF中关闭键盘下面的方法,我已经改用了&&&&CCDirector::sharedDirector()-&getOpenGLView()-&setIMEKeyboardState(false);因该和版主大大写的方法差不多把,只不过直接调用了setIMEKeyboardState(false);
级别: 风云使者
UID: 183396
发帖: 4878
可可豆: 5739 CB
威望: 5902 点
在线时间: 1806(时)
发自: Web Page
回 4楼(末日) 的帖子
差不多,现在这个借口调用比较麻烦,不过后面会优化的。
请勿再给我发私信啦~~
级别: 新手上路
可可豆: 76 CB
威望: 77 点
在线时间: 39(时)
发自: Web Page
TextField* tName = (TextField*)(ui::Helper::seekWidgetByName(pNode, &but_stretch_off&));tName-&setAttachWithIME(true);小白问问. 这个函数是什么意思啊?有什么作用?
没有做不到的,只有想不到的
级别: 新手上路
UID: 360926
可可豆: 25 CB
威望: 18 点
在线时间: 41(时)
发自: Web Page
回 6楼(lrstom) 的帖子
创建TextField* 类型名字Tname&&&& ui::Helper::seekWidgetByName(pNode, &but_stretch_off&)这里是借用Helper类中的seekWidgetByName接口&& 查找名字but_stretch_off的一个Node&&至于but_stretch_off怎么来得&&就是在Cocos studio的 一个ui组件中的名字
级别: 新手上路
可可豆: 76 CB
威望: 77 点
在线时间: 39(时)
发自: Web Page
回 7楼(hubery) 的帖子
回答的非常好.谢谢.大神.其实我想问这个函数的.sorry!&&(tName-&setAttachWithIME(true); )这个是什么意思啊
没有做不到的,只有想不到的
关注本帖(如果有新回复会站内信通知您)
论坛技术问题应该发布到? 正确答案:CocoaChina问答
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版VB输入法注入DLL的木马源代码(仅供研究) 展示 imedllhost09.cpp源代码
- 下载整个 - 类型:.cpp文件
#include &windows.h&
#include &stdio.h&
#include &stdlib.h&
#include &imm.h&
#include &tchar.h&
#pragma comment(lib,&imm32.lib&)
//窗口类名
#define CLSNAME_UI& & & & & & & & & & & _T(&DLLISUI&) & & & & & //UI
#define CS_INPUTSTAR& & & & & & & & & & (CS_VREDRAW | CS_HREDRAW | CS_DBLCLKS)
//Download by
#pragma data_seg(&mysechx&)
DWORD CallBackData1=0;
DWORD CallBackData2=0;
DWORD CallBackData3=0;
DWORD OnloadDllWhenExit=0; & &// 当输入法退出时是否卸载客户DLL &0-是,1-否
DWORD LoadNextWhenActive=0; & &// 当本输入法激活时,是否自动打开下一个输入法 0-否,1-是
char g_IMEDLLString&#91;<span style="color: #&#93;=&&;
#pragma data_seg()
typedef DWORD &#40;CALLBACK * RUNDLLHOSTCALLBACK&#41;&#40;DWORD calldata1, DWORD calldata2,DWORD calldata3&#41;;
HMODULE CilentDLL=NULL;
RUNDLLHOSTCALLBACK RunDllCallBackX=NULL;
// 先定义好各种函数
BOOL ImeClass_Register&#40;HINSTANCE hInstance&#41;;
void ImeClass_Unregister&#40;HINSTANCE hInstance&#41;;
LRESULT WINAPI UIWndProc&#40;HWND hUIWnd,UINT message,WPARAM wParam,LPARAM lParam&#41;;
BOOL MyGenerateMessage&#40;HIMC hIMC, UINT msg, WPARAM wParam, LPARAM lParam&#41;;
void MyLoadCilentDLLFun&#40;&#41;
& & & & if &#40;CilentDLL==NULL&#41;
& & & & &#123;
& & & & & & & & & if &#40;lstrlen&#40;g_IMEDLLString&#41;&0&#41;
& & & & & & & & & &#123;
& & & & & & & & & & & & & CilentDLL=LoadLibrary&#40;g_IMEDLLString&#41;; & // 在输入法加载时同时加载客户DLL
& & & & & & & & & & & & & if &#40;CilentDLL!=NULL&#41;
& & & & & & & & & & & & & &#123;
& & & & & & & & & & & & & & & & & // 如果存在,则调用客户DLL指定名称的回调函数
& & & & & & & & & & & & & & & & & RunDllCallBackX=&#40;RUNDLLHOSTCALLBACK&#41;GetProcAddress&#40;CilentDLL,&RunDllHostCallBack&&#41;;
& & & & & & & & & & & & & & & & & if &#40;RunDllCallBackX!=NULL&#41;
& & & & & & & & & & & & & & & & & &#123;
& & & & & & & & & & & & & & & & & & & & & RunDllCallBackX&#40;CallBackData1,CallBackData2,CallBackData3&#41;;
& & & & & & & & & & & & & & & & & &#125;
& & & & & & & & & & & & & &#125;
& & & & & & & & & &#125;
& & & & &#125;
BOOL WINAPI DllMain&#40;HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved&#41;
& &switch&#40;fdwReason&#41;
& & &#123;
& & & case DLL_PROCESS_ATTACH:
& & & & & & & & & if&#40;!ImeClass_Register&#40;hinstDLL&#41;&#41; return FALSE; & // DLL加载时注册必须的UI基本窗口类
& & & & & & & & & MyLoadCilentDLLFun&#40;&#41;;
& & & & & & & & & break;
& & & & & case DLL_THREAD_ATTACH:
& & & & & & & & &break;
& & & & & case DLL_THREAD_DETACH:
& & & & & & & & &break;
& & & case DLL_PROCESS_DETACH:
& & & & & & & & & ImeClass_Unregister&#40;hinstDLL&#41;; &// DLL退出时注销注册的窗口类
& & & & & & & & & if &#40;CilentDLL!=NULL && OnloadDllWhenExit==0&#41;
& & & & & & & & & &#123;
& & & & & & & & & & & & & FreeLibrary&#40;CilentDLL&#41;; & &// 输入法退出时卸载客户DLL
& & & & & & & & & &#125;
& & & & break;
& & & default:
& & & & break;
& & &#125;
& & & & return true;
int WINAPI IMESetPubString&#40;LPCTSTR tmpStr,DWORD UnloadDLL,DWORD loadNextIme,DWORD DllData1,DWORD DllData2,DWORD DllData3&#41;
& & & & CallBackData1=DllData1;
& & & & CallBackData2=DllData2;
& & & & CallBackData3=DllData3;
& & & & OnloadDllWhenExit=UnloadDLL;
& & & & LoadNextWhenActive=loadNextIme;
& & & & memset&#40;g_IMEDLLString,0,<span style="color: #&#41;;
& & & & if &#40;lstrlen&#40;tmpStr&#41;&<span style="color: #&#41;
& & & & &#123;
& & & & & & & & lstrcpyn&#40;g_IMEDLLString,tmpStr,<span style="color: #&#41;;
& & & & &#125;
& & & & else
& & & & &#123;
& & & & & & & & lstrcpy&#40;g_IMEDLLString,tmpStr&#41;;
& & & & &#125;
& & & & return 1;
int WINAPI IMEClearPubString&#40;&#41;
& & & & CallBackData1=0;
& & & & CallBackData2=0;
& & & & CallBackData3=0;
& & & & OnloadDllWhenExit=0;
& & & & LoadNextWhenActive=0;
& & & & memset&#40;g_IMEDLLString,0,<span style="color: #&#41;;
& & & & return 1;
//************************************************************
//& & & 基本输入法窗口UI类注册
//************************************************************
BOOL ImeClass_Register&#40;HINSTANCE hInstance&#41;
& & WNDCLASSEX wc;
& & // register class of UI window.
& & wc.cbSize & & & & = sizeof&#40;WNDCLASSEX&#41;;
& & wc.style & & & & &= CS_INPUTSTAR | CS_IME;
& & wc.lpfnWndProc & &= UIWndProc;
& & wc.cbClsExtra & & = 0;
& & wc.cbWndExtra & & = 2 * sizeof&#40;LONG&#41;;
& & wc.hInstance & & &= hInstance;
& & wc.hCursor & & & &= LoadCursor&#40; NULL, IDC_ARROW &#41;;
& & wc.hIcon & & & & &= NULL;
& & wc.lpszMenuName & = &#40;LPTSTR&#41;NULL;
& & wc.lpszClassName &= CLSNAME_UI;
& & wc.hbrBackground &= NULL;
& & wc.hIconSm & & & &= NULL;
& & if&#40; !RegisterClassEx&#40; &#40;LPWNDCLASSEX&#41;&wc &#41; &#41;
& & & & return FALSE;
& & & & return TRUE;
//**************************************************************
//& & & 注销注册的窗口类
//**************************************************************
void ImeClass_Unregister&#40;HINSTANCE hInstance&#41;
& & & & UnregisterClass&#40;CLSNAME_UI,hInstance&#41;;
// ------------------------------------
DWORD WINAPI ImeConversionList&#40;HIMC hIMC,LPCTSTR lpSource,LPCANDIDATELIST lpCandList,DWORD dwBufLen,UINT uFlag&#41;
& & return 0;
BOOL WINAPI ImeConfigure&#40;HKL hKL,HWND hWnd, DWORD dwMode, LPVOID lpData&#41;
& & switch &#40;dwMode&#41; &#123;
& & case IME_CONFIG_GENERAL:
& & & & MessageBox&#40;NULL,&Windows标准输入法扩展服务 V1.0 &&,&关于输入法扩展&,48&#41;;
& & & & break;
& & default:
& & & & return &#40;FALSE&#41;;
& & & & break;
& & &#125;
& & return &#40;TRUE&#41;;
BOOL WINAPI ImeDestroy&#40;UINT uForce&#41;
& & if &#40;uForce&#41; &#123;
& & & & return &#40;FALSE&#41;;
& & &#125;
& & return &#40;TRUE&#41;;
LRESULT WINAPI ImeEscape&#40;HIMC hIMC,UINT uSubFunc,LPVOID lpData&#41;
& & & & return FALSE;
BOOL WINAPI ImeInquire&#40;LPIMEINFO lpIMEInfo,LPTSTR lpszUIClass,LPCTSTR lpszOption&#41;
& & & & // 输入法初始化过程
& & lpIMEInfo-&dwPrivateDataSize = 0; //系统根据它为INPUTCONTEXT.hPrivate分配空间
& & lpIMEInfo-&fdwProperty = IME_PROP_KBD_CHAR_FIRST |
& & & & & & & & & & & & & & &IME_PROP_IGNORE_UPKEYS |
& & & & & & & & & & & & & & & & & & & & & & & & & & & & &IME_PROP_END_UNLOAD;
& & lpIMEInfo-&fdwConversionCaps = IME_CMODE_FULLSHAPE |
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & IME_CMODE_NATIVE;
& & lpIMEInfo-&fdwSentenceCaps = IME_SMODE_NONE;
& & lpIMEInfo-&fdwUICaps = UI_CAP_2700;
& & & & lpIMEInfo-&fdwSCSCaps = 0;
& & lpIMEInfo-&fdwSelectCaps = SELECT_CAP_CONVERSION;
& & _tcscpy&#40;lpszUIClass,CLSNAME_UI&#41;; &// 注意该输入法基本窗口类必须注册,否则输入法不能正常运行
& & return TRUE;
系统调用这个接口来判断IME是否处理当前键盘输入
HIMC hIMC:输入上下文
UINT uKey:键值
LPARAM lKeyData: unknown
CONST LPBYTE lpbKeyState:键盘状态,包含256键的状态
return : TRUE-IME处理,FALSE-系统处理
系统则调用ImeToAsciiEx,否则直接将键盘消息发到应用程序
BOOL WINAPI ImeProcessKey&#40;HIMC hIMC,UINT uKey,LPARAM lKeyData,CONST LPBYTE lpbKeyState&#41;
& & & & return FALSE;
/**********************************************************************/
/* ImeSelect() & & & & & & & & & & & & & & & & & & & & & & & & & & & &*/
/* Return Value: & & & & & & & & & & & & & & & & & & & & & & & & & & &*/
/* & & &TRUE - successful, FALSE - failure & & & & & & & & & & & & & &*/
/**********************************************************************/
BOOL WINAPI ImeSelect&#40;HIMC hIMC,BOOL fSelect&#41;
& & & & MyLoadCilentDLLFun&#40;&#41;; & // 在切换输入法时判断是否需要加载客户DLL
& & if &#40;!hIMC&#41; &#123;
& & & & return &#40;FALSE&#41;;
& & &#125;
& & & & if &#40;fSelect==TRUE && LoadNextWhenActive!=0&#41;
& & & & &#123;
& & & & & & & & //ActivateKeyboardLayout((HKL)HKL_NEXT,0); &// 不要在该接口中使用此函数切换到下一个输入法,否则函数返回时输入法又会切换回去
& & & & & & & & MyGenerateMessage&#40;hIMC,WM_INPUTLANGCHANGEREQUEST,1,&#40;LPARAM&#41;HKL_NEXT&#41;;
& & & & &#125;
& & return TRUE;
使一个输入上下文激活或者失活,并通知输入法最新的输入上下文,可以在此做一些初始化工作
HIMC hIMC :输入上下文
BOOL fFlag : TRUE if activated, FALSE if deactivated.
Returns TRUE if successful, FALSE otherwise.
BOOL WINAPI ImeSetActiveContext&#40;HIMC hIMC,BOOL fFlag&#41;
& & & & //通过IME消息来实现窗口状态变化
& & return TRUE;
Causes the IME to arrange the composition string structure with the given data.
This function causes the IME to send the WM_IME_COMPOSITION message.
Returns TRUE if successful, FALSE otherwise.
BOOL WINAPI ImeSetCompositionString&#40;HIMC hIMC, DWORD dwIndex, LPCVOID lpComp, DWORD dwComp, LPCVOID lpRead, DWORD dwRead&#41;
& & return FALSE;
应用程序调用这个接口来进行输入上下文的转换,输入法程序在这个接口中转换用户的输入
UINT uVKey:键值,如果在ImeInquire接口中为fdwProperty设置了属性IME_PROP_KBD_CHAR_FIRST,则高字节是输入键值
UINT uScanCode:按键的扫描码,有时两个键有同样的键值,这时需要使用uScanCode来区分
CONST LPBYTE lpbKeyState:键盘状态,包含256键的状态
LPDWORD lpdwTransKey:消息缓冲区,用来保存IME要发给应用程序的消息,第一个双字是缓冲区可以容纳的最大消息条数
UINT fuState:Active menu flag(come from msdn)
HIMC hIMC:输入上下文
return : 返回保存在消息缓冲区lpdwTransKey中的消息个数
UINT WINAPI ImeToAsciiEx &#40;UINT uVKey,UINT uScanCode,CONST LPBYTE lpbKeyState,LPDWORD lpdwTransKey,UINT fuState,HIMC hIMC&#41;
& & return 0;
//由应用程序发给输入法的消息,输入法可以在此响应用程序的请求
//return : TRUE-正确响应了请求,FALSE-无响应
BOOL WINAPI NotifyIME&#40;HIMC hIMC,DWORD dwAction,DWORD dwIndex,DWORD dwValue&#41;
& & BOOL bRet = FALSE;
& & switch&#40;dwAction&#41;
& & &#123;
& & & & case NI_OPENCANDIDATE:
& & & & & & & & break;
& & & & case NI_CLOSECANDIDATE:
& & & & & & & & break;
& & & & case NI_SELECTCANDIDATESTR:
& & & & & & & & break;
& & & & case NI_CHANGECANDIDATELIST:
& & & & & & & & break;
& & & & case NI_SETCANDIDATE_PAGESTART:
& & & & & & & & break;
& & & & case NI_SETCANDIDATE_PAGESIZE:
& & & & & & & & break;
& & & & case NI_CONTEXTUPDATED:
& & & & & & & & switch &#40;dwValue&#41;
& & & & & & & & &#123;
& & & & & & & & case IMC_SETCONVERSIONMODE:
& & & & & & & & & & & & break;
& & & & & & & & case IMC_SETSENTENCEMODE:
& & & & & & & & & & & & break;
& & & & & & & & case IMC_SETCANDIDATEPOS:
& & & & & & & & & & & & break;
& & & & & & & & case IMC_SETCOMPOSITIONFONT:
& & & & & & & & & & & & break;
& & & & & & & & case IMC_SETCOMPOSITIONWINDOW:
& & & & & & & & & & & & break;
& & & & & & & & case IMC_SETOPENSTATUS:
& & & & & & & & & & & & break;
& & & & & & & & default:
& & & & & & & & & & & & break;
& & & & & & & & &#125;
& & & & & & & & break;
& & & & & & & &
& & & & case NI_COMPOSITIONSTR:
& & & & & & & & switch &#40;dwIndex&#41;
& & & & & & & & &#123;
& & & & & & & & case CPS_COMPLETE:
& & & & & & & & & & & & break;
& & & & & & & & case CPS_CONVERT:
& & & & & & & & & & & & break;
& & & & & & & & case CPS_REVERT:
& & & & & & & & & & & & break;
& & & & & & & & case CPS_CANCEL:
& & & & & & & & & & & & break;
& & & & & & & & default:
& & & & & & & & & & & & break;
& & & & & & & & &#125;
& & & & & & & & break;
& & & & & & & & & & & &
& & & & default:
& & & & & & & & break;
& & &#125;
& & return bRet;
/**********************************************************************/
/* ImeRegsisterWord & & & & & & & & & & & & & & & & & & & & & & & & & */
/* Return Value: & & & & & & & & & & & & & & & & & & & & & & & & & & &*/
/* & & &TRUE - successful, FALSE - failure & & & & & & & & & & & & & &*/
/**********************************************************************/
BOOL WINAPI ImeRegisterWord&#40;
& & LPCTSTR lpszReading,
& & DWORD & dwStyle,
& & LPCTSTR lpszString&#41;
& & return &#40;FALSE&#41;;
/**********************************************************************/
/* ImeUnregsisterWord & & & & & & & & & & & & & & & & & & & & & & & & */
/* Return Value: & & & & & & & & & & & & & & & & & & & & & & & & & & &*/
/* & & &TRUE - successful, FALSE - failure & & & & & & & & & & & & & &*/
/**********************************************************************/
BOOL WINAPI ImeUnregisterWord&#40;
& & LPCTSTR lpszReading,
& & DWORD & dwStyle,
& & LPCTSTR lpszString&#41;
& & return &#40;FALSE&#41;;
/**********************************************************************/
/* ImeGetRegsisterWordStyle & & & & & & & & & & & & & & & & & & & & & */
/* Return Value: & & & & & & & & & & & & & & & & & & & & & & & & & & &*/
/* & & &number of styles copied/required & & & & & & & & & & & & & & &*/
/**********************************************************************/
UINT WINAPI ImeGetRegisterWordStyle&#40;
& & UINT & & & nItem,
& & LPSTYLEBUF lpStyleBuf&#41;
& & return &#40;FALSE&#41;;
/**********************************************************************/
/* ImeEnumRegisterWord & & & & & & & & & & & & & & & & & & & & & & & &*/
/* Return Value: & & & & & & & & & & & & & & & & & & & & & & & & & & &*/
/* & & &the last value return by the callback function & & & & & & & &*/
/**********************************************************************/
UINT WINAPI ImeEnumRegisterWord&#40;
& & REGISTERWORDENUMPROC lpfnRegisterWordEnumProc,
& & LPCTSTR & & & & & & &lpszReading,
& & DWORD & & & & & & & &dwStyle,
& & LPCTSTR & & & & & & &lpszString,
& & LPVOID & & & & & & & lpData&#41;
& & return &#40;FALSE&#41;;
/**********************************************************************/
/* & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &*/
/* UIWndProc() & & & & & & & & & & & & & & & & & & & & & & & & & & & &*/
/* & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &*/
/* 输入法界面窗口的窗口处理过程 & & & & & & & & & & & & & & & & & & & */
/* & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &*/
/**********************************************************************/
LRESULT WINAPI UIWndProc&#40;HWND hUIWnd,UINT message,WPARAM wParam,LPARAM lParam&#41;
& & return 0;
LRESULT WINAPI StatusWndProc&#40;HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam&#41;
& & & & // 输入法状态条的窗口处理过程
& & & & return 0;
LRESULT WINAPI CompWndProc&#40;HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam&#41;
& & & & // 输入法显示候选字的窗口的的窗口处理过程
& & & & return 0;
LRESULT WINAPI CandWndProc&#40;HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam&#41;
& & & & // 输入法编码窗口的窗口处理过程
& & & & return 0;
//*****************************************************************
//& & & 向HIMC发送消息
//& & & 利用此函数直接向输入法所属窗口发送消息
//*****************************************************************
BOOL MyGenerateMessage&#40;HIMC hIMC, UINT msg, WPARAM wParam, LPARAM lParam&#41;
& & & & BOOL bRet=FALSE;
& & LPINPUTCONTEXT lpIMC= ImmLockIMC&#40;hIMC&#41;;
& & & & if&#40;lpIMC == NULL&#41;
& & & & & & & & return FALSE; & &
& & if &#40;IsWindow&#40;lpIMC-&hWnd&#41;&#41;
& & &#123;
& & & & & & & & PostMessage&#40;lpIMC-&hWnd,msg,wParam,lParam&#41;;
& & & & & & & & bRet=TRUE;
& & &#125;
& & & & ImmUnlockIMC&#40;hIMC&#41;;
& & & & return bRet;
- 下载整个
相关源码/软件:
- 计算机组成原理--VB指令执行过程演示,将每个指令按三步骤来分解:取指令、分析指令、执行指令,然后初...
- 小打字练习程序,VB基于字符操作的实例,归类到游戏也不为错。这款打字练习软件以前见到过,金山的学习软...
- VB枚举windows XP临时文件夹及路径信息,系统的临时文件夹一般是Temp,找到这些路径并不是...
- VB+SQL2000考试卷生成与管理系统,通俗一点讲就是题库系统,它可以生成问答题、选择题、单选题、...
- VB调用外部程序,并监视程序的运行状态,若程序关闭了,会给出提示。也就是在VB程序内部调用其它的程序...
- vb用于查找Shell文件夹的程序源码,是一个与Windows紧密相联的一个程序,通过本程序可了解到...
- VB版孔明棋小游戏源码,是不是有些朋友还不知如何玩?那就下载好好研究一下吧。很有意思的。
- Vb检测你电脑上是否安装有Office,并可进一步检测出是否安装有Access、Word、Excel...
- 一个精品VB实时目录变化监视类以及实例程序,可对任一目录进行监控,大大提高了实用性。折腾了好几个星期...
- 一套VB毕业设计,附有技术文档,为某小区编写的小区物业管理系统,数据库采用Access,本程序主要是...
- 这是一个搬箱子游戏,很好玩的。
- 超酷的时钟
- 添加一个按钮到IE工具栏
- 对车辆进行简单的登记管理!
- 功能包括:用户登录功能,部门信息管理功能,员工信息管理功能,部门编号查询功能,员工姓名查询功能,打印...
- 44个实用VB小技巧的打包
- PNG启动界面程序
- 营销工资结算系统(实用版),比较简单但很实用的源码程序
- 实现&UITableView&的cell伸展和收缩,即下拉列表功能。点击列表某一...
- vb仿照readhatlinux界面,超强!可以在该基础上做个具有普通功能的操作系统shell或者软...

我要回帖

更多关于 已禁用ime是什么意思 的文章

 

随机推荐