Windows でプログラムを作成していると、ある種のウィンドウでは IME を On にできなくしたくなります。例えば、WS_EX_TOPMOST のようなスタイルを持つウィンドウや、全画面を占有してしまうようなアプリケーションです。これらの多くは IME をほとんど必要とせず、むしろ偶然か何かで On になっても、ただ不愉快になるだけです。そこでそれらの Window では何とか IME を On にできなくしたくなるわけです。というわけで、そのようなときには次のコードが役に立つでしょう。
//IME 有効化/無効化関数
//BOOL WINAPI ImeEnable(HWND hwnd, BOOL fEnable)
//引数: hwnd: 対象となるウィンドウ
// fEnable: TRUE:IME を有効にする FALSE:無効にする
//戻値: 以前の状態。TRUE:IME は有効だった FALSE:IME は無効だった
//注意: このコード断片は自由に使ってよいです
BOOL WINAPI ImeEnable(HWND hwnd, BOOL fEnable)
{
static HMODULE hwinnls;
static BOOL (WINAPI *WINNLSEnableIME)(HWND,BOOL);
if(hwinnls == NULL){
hwinnls = (HMODULE)LoadLibrary("WINNLS32.DLL");
WINNLSEnableIME = GetProcAddress(hwinnls, "WINNLS32EnableIME");
}
return WINNLSEnableIME ? WINNLSEnableIME(hwnd, fEnable): TRUE;
}
|
by seclan