lz4のヘッダがよく分からない件

RealTime Data Compression: LZ4のv1.3.3で圧縮すると,下記のようにヘッダのマジックナンバーが「03 21 4C 18」となります。

lz4

t-mat/lz4mt · GitHubで圧縮すると,下記のように「04 22 4D 18」になります。

lz4mt

そして,相互に伸長できません。

マスターソースをSource Checkout – lz4 – Extremely Fast Compression algorithm – Google Project Hostingからチェックアウトすると,lz4mtと同じヘッダになります。

v1.3.3のソースは公開されていないようなので,Lhazはマスターソースベースで進めます。


Lhazのリリース方法

Lhazのリリース方法です。v2系を例にしています。

lhaz_release1

lhaz\Releaseフォルダ配下の,上図で選択状態になっているファイルを,「送る」で「デバッグ版のLhaz.exe」に送ります。あるいは,デバッグ版のLhaz.exeにドラッグ&ドロップしてください。32ビット版は,32ビットデバッグ版,64ビット版は,64ビットデバッグ版で圧縮します。圧縮形式は,「SFX(CAB)圧縮」を選びます。自己解凍書庫の設定は,以下のようにします。

「ショートカット名」を空欄にする点に注意してください。

v3系は以下のファイルになります。

lhaz_release2


ListView_EditLabelでキーが効かない

Win32API ListView_EditLabelマクロでリストビューのアイテムの編集を始められるのですが,ENTERキーやBSキーが効きません。ENTERキーが効かないので,マウスで他のエリアをクリックして編集を確定させなければなりませんでした。これでは使いづらいので,原因を調べました。

ダイアログの上にリストビューコントロールを作成していると,キーがダイアログの方で処理される,という現象があり,サブクラス化で回避できる,という情報がありました。しかし,Lhazではダイアログアプリではないので,これには該当しません。

引き続き調べていくと,TranslateAccelerator() がアクセラレータに登録されているキーをWM_COMMANDに変換している,ということを思い出しました。確かに,ENTERキーは個別ファイルを開きますし,BSキーは上位フォルダに移動します。

どうも簡単に回避する仕組みはないようなので,フラグ変数を設けて,ListView_EditLabel~LVN_ENDLABELEDITの間は,TranslateAccelerator()を呼び出さない,というダサイ解決法に落ち着きました。