トップページ > 記事閲覧
複数の文字入力ウィンドウを同時に扱いたい
名前:アルル 日時: 2022/08/15 03:56

DXライブラリを使用させて頂きありがとうございます。 複数の文字入力ウィンドウを同時に扱いたい目的で、DXライブラリの文字入力を使用せずに済む方法を探していました。 下記のようなプログラムで用意することはできたのですが、日本語入力中素早く文字を入力すると意図せぬ英字が追加されてしまいました。 ゆっくり打てば何も問題はないのですが、キーボードを適当に素早く叩くと発生します。 この現象の解決方法などがあればご教示いただけると幸いです。 以上、よろしくお願いします。 【開発環境】 windows11 Microsoft Visual Studio Community 2017 Version 15.9.49 VisualStudio.15.Release/15.9.49+28307.2019 Microsoft .NET Framework Version 4.8.04161 インストールされているバージョン:Community Visual C++ 2017 Microsoft Visual C++ 2017 【問題発生のプログラム】 #include "DxLib.h" #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { SetGraphMode(640, 480, 16); ChangeWindowMode(TRUE); //ウィンドウモード if (DxLib_Init() == -1) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } SetUseIMEFlag(TRUE); SetDrawScreen(DX_SCREEN_BACK); // 描画先を裏画面に設定 HWND hwnd = GetMainWindowHandle(); HWND hwnd_child; hwnd_child = CreateWindowA("edit", "", WS_VISIBLE | WS_CHILD | ES_LEFT, 140, 38, 400, 22, hwnd, (HMENU)1, hInstance, NULL); int A_pflag = 1; ClearDrawScreen(); // 裏画面のデータを全て削除 DrawBox(0, 0, 640, 480, GetColor(240, 240, 240), TRUE); // 背景色書き込み ScreenFlip(); // 裏画面を表示する ShowWindow(hwnd_child, SW_SHOW); while (ProcessMessage() == 0 ) {} DestroyWindow(hwnd_child); DxLib_End(); // DXライブラリ使用の終了処理 return 0; // ソフトの終了 }
メンテ

Page: 1 |

Re: 複数の文字入力ウィンドウを同時に扱いたい ( No.1 )
名前:管理人 日時:2022/08/16 02:02

すみません、ご指摘の現象については私にも原因が分かっていません なのでDXライブラリではIME入力中に半角文字のWN_CHARメッセージがあった場合は無視する という強引な方法で解決しています アルルさんが独自に CreateWindow を行って作成した入力ウィンドウについては DXライブラリ側が感知できていないため、半角文字の謎入力が素通りしてしまい 『本件の現象を強引に解決する処理』が効きません DXライブラリの文字入力も MakeKeyInput を使用することで同時に複数の文字列入力を表示することが できますが、その機能では実現できない処理なのでしょうか?
メンテ
Re: 複数の文字入力ウィンドウを同時に扱いたい ( No.2 )
名前:アルル 日時:2022/08/17 07:27

ご回答ありがとうございます。 最初、MakeKeyInputを使う方法は思いつかなくて、こちらにしました。 既にこの方法でかなりプログラムを書いてしまってから、この不具合を発見したので、書き直すのがかなり大変です。 原因不明の現象であれば、仕方ありません。MakeKeyInputで、書き直してみようと思います。 対応、ありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存