Win32API ListView_EditLabelマクロでリストビューのアイテムの編集を始められるのですが,ENTERキーやBSキーが効きません。ENTERキーが効かないので,マウスで他のエリアをクリックして編集を確定させなければなりませんでした。これでは使いづらいので,原因を調べました。
ダイアログの上にリストビューコントロールを作成していると,キーがダイアログの方で処理される,という現象があり,サブクラス化で回避できる,という情報がありました。しかし,Lhazではダイアログアプリではないので,これには該当しません。
引き続き調べていくと,TranslateAccelerator() がアクセラレータに登録されているキーをWM_COMMANDに変換している,ということを思い出しました。確かに,ENTERキーは個別ファイルを開きますし,BSキーは上位フォルダに移動します。
どうも簡単に回避する仕組みはないようなので,フラグ変数を設けて,ListView_EditLabel~LVN_ENDLABELEDITの間は,TranslateAccelerator()を呼び出さない,というダサイ解決法に落ち着きました。
コメントを残す