トップページ > 記事閲覧
Win8でのMakeKeyInputの不具合について
名前:PATOLE 日時: 2013/06/09 00:39

お世話になっております。 いつもDXライブラリを使用させていただいております、PATOLEと申します。 Windows8の実行環境にて MakeKeyInput系を使用すると、正常に変換されないようです。 ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_input.html#R5N13 上記のサンプルプログラムを実行しましたが 変換候補がうまく表示されません。 1度目の変換候補は正常ですが 2度目以降は1度目に変換された候補が表示されます。 お忙しい中、お手数ですがご確認いただければ幸いです。
メンテ

Page: 1 |

Re: Win8でのMakeKeyInputの不具合について ( No.1 )
名前:管理人 日時:2013/06/09 01:01

少し前にWindows8環境で漢字変換が正常に動作しない不具合を修正しましたので、 恐らくこちらの最新バージョンでは直っていると思います よろしければお試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: Win8でのMakeKeyInputの不具合について ( No.2 )
名前:PATOLE 日時:2013/06/09 01:12

管理人さま 返答ありがとうございます。 上記の不具合は修正されておりました。 少し気になる点があるのですが 一度入力が完了して 再びMakeKeyInputでハンドルを作成し、入力しようとすると 全角入力だったものが、半角入力に毎回変わっているのは仕様でしょうか?
メンテ
Re: Win8でのMakeKeyInputの不具合について ( No.3 )
名前:管理人 日時:2013/06/23 20:55

仕様です・・・ ライブラリ内部の処理として、文字列入力ハンドルが一つもない状態で MakeKeyInput で 文字列入力ハンドルが作成された場合に SetUseIMEFlag( TRUE ) ; を呼び、 同じように全ての文字列入力ハンドルが DeleteKeyInput で削除されたときに SetUseIMEFlag( FALSE ) ; を呼んでいます そして SetUseIMEFlag( FALSE ) ; が呼ばれたタイミングで全角入力だった設定がリセットされます ただ、SetUseIMEFlag 関数は DxLib.h に書かれている内部処理外からも使用できる関数なので、 内部で勝手にこの設定が変更されるのは不自然なので、内部では SetUseIMEFlag 関数で変更される フラグとは別にフラグを持つことで内部では SetUseIMEFlag 関数を呼ばないように仕様を変更しました この変更で内部で新たに追加したフラグか、SetUseIMEFlag で設定するフラグのどちらかが TRUE になっていたら全角入力の設定をリセットしないようにしましたので、事前に SetUseIMEFlag( TRUE ) ; を実行しておけば全角入力の設定がリセットされないようにできるようになりました 上記変更を加えたバージョンをこちらにアップしましたので、よろしければお試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: Win8でのMakeKeyInputの不具合について ( No.4 )
名前:PATOLE 日時:2013/07/17 16:40

確認が大変遅れてしまい、恐れ入ります。 確認をさせていただきましたが、不具合がありました。 上記のバージョン及び、DXライブラリの最新版で試してみましたが SetUseIMEFlag( TRUE ) ; を使用しない場合は 変換候補が表示されませんでした。 使用した場合は変換候補が表示されましたが 前回の変換候補が残ったまま、正常に動作ないようです。 お忙しい中恐れ入りますが、ご確認いただければ幸いです。 開発・実行環境 Windows8 Visual C++ 2010
メンテ
Re: Win8でのMakeKeyInputの不具合について ( No.5 )
名前:PATOLE 日時:2013/07/18 00:10

追記です。 以前は、『DxLibVCTest.exe』でいただいたDXライブラリを使用していました。 (ファイルの更新日が6/9です) 最新のDXライブラリを使用すると、なぜか2Dの描画処理が異常に重くなっています。 大規模なゲームプログラムなので、どの関数による影響かまではわかりませんが 2D描画(文字描画?)関連がとても重いです。 ライブラリを、旧バージョンに戻すと速度は正常に戻るようです。 そちらも重ねてご確認いただければと存じます。
メンテ
Re: Win8でのMakeKeyInputの不具合について ( No.6 )
名前:管理人 日時:2013/07/21 09:44

> SetUseIMEFlag( TRUE ) ; を使用しない場合は > 変換候補が表示されませんでした。 >  > 使用した場合は変換候補が表示されましたが > 前回の変換候補が残ったまま、正常に動作ないようです。 すみません、SetUseIMEFlag( TRUE ) ; をしていない状態で KeyInputString などを 使用すると全角文字の入力中に全角文字が表示されないという不具合があるのを確認しました ただ、文字自体が全く表示されない状態であったり、修正前の状態でも SetUseIMEFlag( TRUE ) ; を使用すると正常に動作するので PATOLEさんの状況とは少し違うようです 今回の修正で PATOLEさんの環境でも正常に動作するようになったかどうかはわかりませんが、 よろしければお試しになってみてください http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) > 最新のDXライブラリを使用すると、なぜか2Dの描画処理が異常に重くなっています。 > 大規模なゲームプログラムなので、どの関数による影響かまではわかりませんが > 2D描画(文字描画?)関連がとても重いです。 > ライブラリを、旧バージョンに戻すと速度は正常に戻るようです。 私の手元の環境で簡単にテストした限りでは速度の違いは確認できませんでした 特定の描画設定と画像の組み合わせなどで速度の低下が発生するのかもしれませんが、 6/9から現在までの変更でそのようなことが発生してしまいそうな変更が無く、見当がつきません・・・ 大変お手数で申し訳ないのですが、6/9から前回の DxLibVCTest.exe までのバージョンを 全てアップしてみましたので、どのバージョンから遅くなってしまうかご確認頂けないでしょうか? m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest_20130609.exe https://dxlib.xsrv.jp/temp/DxLibVCTest_20130619.exe https://dxlib.xsrv.jp/temp/DxLibVCTest_20130623.exe https://dxlib.xsrv.jp/temp/DxLibVCTest_20130630.exe https://dxlib.xsrv.jp/temp/DxLibVCTest_20130708.exe https://dxlib.xsrv.jp/temp/DxLibVCTest_20130713.exe https://dxlib.xsrv.jp/temp/DxLibVCTest_20130715.exe ( VisualStudioの「差分だけコンパイルする」機能の誤動作を防ぐために  別のバージョンを上書きコピーした後は「リビルド」をして下さい )
メンテ
Re: Win8でのMakeKeyInputの不具合について ( No.7 )
名前:PATOLE 日時:2013/07/21 18:26

修正お疲れ様です。 確認をさせていただきましたところ MakeKeyInput系の不具合は直っておりませんでした。 Windows8とWindows7の両方の環境下で実行したところ Windows8でのみ発生します。(両方ともGoogle日本語入力) 日本語文字列の表示や一発変換などはうまくいくのですが 1.日本語文字列を入力 2.スペースキーを2回押して変換候補を表示 3.エンターで決定後、再び日本語を入力 4.スペースキーで変換をしようとすると、2で表示された変換候補がそのまま表示されます。 これは、サンプルプログラムでも発生しました。 (ウィンドウモードで起動するように変更しましたが……) IMEは、Google日本語入力を使用しています。 Microsoft IMEでは正常に動作いたしました。 (どうやらIMEの種類が問題だったようです。伝える情報が不足しており申し訳ありません) 動作が重くなる件ですが 『20130630』までは通常どおりの動作で 『20130708』以降が非常に重い状態になることを確認しました。 (確認した環境は、Windows7,Vistaです) 比較的、低スペックのコンピュータでのみ現象を確認できました。 1ループごとに毎回使用してそうな関数は ProcessMessage() ClearDrawScreen() GetMousePoint() GetHitKeyStateAll() ScreenFlip() DrawGraph() DrawRotaGraph() SetDrawBlendMode() SetDrawArea() GetNowCount() GetActiveFlag() SetFontSize() DrawFormatString() などです。ざくっと見ただけですが、見当違いでしたら申し訳ないです。 メインループに入る前に使用している関数は SetMainWindowText() SetGraphMode( 1024 , 614 , 16 ) SetWindowIconID() ChangeWindowMode( TRUE ) SetHookWinProc() SetWindowSizeChangeEnableFlag( TRUE ) SetAlwaysRunFlag( TRUE ) SetDoubleStartValidFlag( TRUE ) SetOutApplicationLogValidFlag( FALSE ) DxLib_Init() SetDrawScreen( DX_SCREEN_BACK ) SetDXArchiveKeyString() SetDXArchiveExtension() ChangeFont( "MS ゴシック" ) ChangeFontType( DX_FONTTYPE_EDGE ) SetUseIMEFlag( TRUE ) SetTransColor() SetCameraScreenCenter() ChangeLightTypeDir() SetCameraNearFar() 以上です。 このゲームは3D描画と2D描画が混在していますが 2D描画のみしかないシーンでも動作が重くなる現象を確認できました。 他にも必要な情報がありましたら仰ってください。
メンテ
Re: Win8でのMakeKeyInputの不具合について ( No.8 )
名前:てらす 日時:2013/07/22 06:01

私も気になった点がありまして、 こちらで問題になっている動作が重くなる件に関連しそうなので、書き込ませていただきます。 ちょうどDrawString系を使用するプログラムを作っており 私の環境でも異常に重くなるので簡単にテストしてみたところ どうやらChangeFontを実行した後、DrawStringやDrawFormatStringを実行すると途端に重くなるようです。 CreateFontToHandleとDrawStringToHandleの組み合わせなら異常に重くなることもないため 現在はそれで対応しています。 環境: Windows 7 Home Premium 64-bit (6.1, Build 7601) Service Pack 1 (7601.win7sp1_gdr.130318-1533) Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz (8 CPUs), ~3.4GHz NVIDIA GeForce GTX 660 (Driver Version: 9.18.13.1422) Visual Studio 2010 Professional (Version: 10.0.40219.1 SP1Rel) DXライブラリはこのトピックに貼られた最新のものです。 一応、テストに使用したソースコードも貼っておきます。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode( TRUE ); if( DxLib_Init() == -1 ){ return -1; } SetDrawScreen( DX_SCREEN_BACK ); //*ChangeFontを使用するかしないかで明らかな速度差が出る。 //FontNameが何だろうと結果は変わらない。 ChangeFont( "MS ゴシック" ); //*/ //SetFontSize( 14 ); //SetFontThickness( 1 ); while( !ProcessMessage() ){ if( CheckHitKeyAll() != 0 ){ break; } ClearDrawScreen(); LONGLONG time = GetNowHiPerformanceCount(); for( int i=0; i<100; ++i ){ DrawString( 320, 240, "TEST", GetColor( 255, 255, 255 ) ); } time = GetNowHiPerformanceCount()-time; DrawFormatString( 0, 0, GetColor( 255, 255, 255 ), "%08lld", time ); ScreenFlip(); } DxLib_End(); return 0; }
メンテ
Re: Win8でのMakeKeyInputの不具合について ( No.9 )
名前:管理人 日時:2013/07/27 23:26

詳しいご情報ありがとうございます、Windows8 + Google日本語入力で手元の環境でも再現しました 正常に動作するように修正したバージョンをアップしましたので、よろしければお試しください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) 動作が重くなる件についてもお試しいただきありがとうございます ただ、20130630 から 20130708 への変更の中では処理が重くなる原因となるようなものが無く 手元でも速度変化を再現できていないので何もできていない状態です 挙げて頂いた1ループ毎に使用している関数の中では SetFontSize が1ループ毎に使用するには負荷の高い関数となっていますので、 てらすさんも仰られていますが SetFontSize を使用する代わりにメインループに 入る前に CreateFontToHandle で予め必要なサイズのフォントを作成しておいて、 メインループ内ではサイズに合わせて作成しておいたフォントハンドルを使用して 文字列を描画するようにしてみてください
メンテ
Re: Win8でのMakeKeyInputの不具合について ( No.10 )
名前:PATOLE(解決) 日時:2013/08/19 00:36

返答が大変遅くなり申し訳ありません。 修正、お疲れ様です。 上記を試してみましたが、正常に修正されておりました。 ですが、重い現象は変わらないようです。 SetFontSizeが重いとのことですので すべてフォントハンドルを作成して表示すれば重い現象は発生しなくなりました。 そのため、そちらで現在は対応しています。 結果的に解決できましたので、解決とさせていただきます。
メンテ

Page: 1 |

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

   クッキー保存