Win32

環境変数の比較

action_game.exeのテストプレイで使ったプロセス起動処理をHamigaki.Processに追加しています。 で、その前にWindowsの環境変数名は大文字/小文字を区別しないので、その対策を追加しました。 差分 環境変数の名前はCompareStringA(LOCALE_USER_DEFAULT, NOR…

カスタムリソース

初期位置キャラクタ用の画像をWin32リソースファイルとして参照するためにPNGのカスタムリソースに対応しました。 今日の差分 元々読み込み処理がstd::istreamに抽象化されていたので、リソースのアドレスを取得してboost::iostreams::array_sourceを作って…

マップの管理 その3

マップの新規作成と削除を実装しました。 「新規作成」の差分 「削除」の差分 結局、マップ選択用ウィンドウのコンテキストメニューはサブクラス化が面倒だったので親ウィンドウのWM_CONTEXTMENUイベントで処理しました。 ショートカットキーも、キーボード…

IconSelectWindow

マップチップ用画像の選択ダイアログを実装しました。 今日の差分 IconSelectWindowというウィンドウクラス名でPNG画像から32x32ドットの範囲を選択するウィンドウを作って、ダイアログに貼り付けています。 ユーザー定義のウィンドウをダイアログに貼り付け…

フォルダ選択ダイアログ

プロジェクトディレクトリの作成時に標準のフォルダ選択ダイアログを使おうと思って、テストしてました。 使い方忘れがちなのでメモ。

マップの編集 その4

マップチップ配置処理でマウス入力を捕捉するように変更しました。 差分 マウスボタンが押されたらSetCapture()して、ボタンを離すかWM_CAPTURECHANGEDが飛んでくるまでチップを置くようにしています。 これならボタンを押したままアプリケーションを切り替…

マップの編集 その3

マップエディタに新規作成コマンドを実装しました。 差分 今のところ指定できるのはマップに幅と高さだけです。 上のコードではダイアログボックスから入力データを返すのにnewしたオブジェクトを返しているんですが、SetWindowLongPtrでDWLP_USERにポインタ…

create_shell_link

今日はWindows VistaのGame Explorerを弄って遊んでました。 ショートカットファイルを作成する必要があったので、ついでにHamigaki.Filesystemにショートカット作成関数create_shell_link()を追加しました。 shell_link.cpp インタフェースは、 void create…

シンボリックリンクのターゲットを消す方法

DeleteFile If the path points to a symbolic link, the symbolic link is deleted, not the target. To delete a target, you must call CreateFile and specify FILE_FLAG_DELETE_ON_CLOSE. なるほど。 ターゲットを消したい状況が思いつきませんけど。

acl_dump

なんとかACLからCygwinっぽいパーミッション情報を引き出すことができました。 ただ、実際に使ってみるとあまり甘みがないことが分かり、ボツになりました。 例えばWindowsのホームディレクトリをCygwinで見ると、 $ ls -ld /cygdrive/c/Documents\ and\ Set…

argv[0]

Binary Hacksがようやく届き、ざっと目を通しました。 HACK#64の「実行中のプロセスのパス名をチェックする」を読んで、実行中に実行ファイルを移動したらどうなるのかと思い、試してみました。 まずは、Linux。(ファイル移動の時間稼ぎのためgets()が入って…

create_symlink()

ハードリンクとシンボリックリンクの作成関数を追加しました。 symlink.cppの差分 id:y-hamigaki:20061110 に書いたとおり、Vistaのシンボリックリンクはファイルとディレクトリで別物なので、それぞれcreate_file_symlink()とcreate_directory_symlink()を…

続 Vistaのシンボリックリンク

symlink_target()をWindows Vistaのシンボリックリンクに対応させました。 symlink.cppの差分 絶対/相対/UNCパスへのシンボリックリンクでテスト済みです。 シンボリックリンクの作成にはAdministrator権限が必要ですが、リンク先の読み出しだけなら通常の権…

Vistaのシンボリックリンク

Vistaのシンボリックリンクを調べたくて、今更ながらRC1をVirtual PCにインストールしました。 インストールの所要時間は1時間程度でした。 Vistaのシンボリックリンクを作成するには、mklinkというコマンドを使います。 このコマンドはAdministrator権限を…

リパースポイント

TR2互換のsymlink_status()を実装しました。 file_status.cppの差分 Windows用の実装ではリパースポイント(re-parse:再解析の意)を考慮したものになっています。 POSIXのstat()がターゲットの情報を返すのに対し、WindowsのGetFileAttributesEx()やFindFirst…

status()

ファイル情報を取得する関数status()を実装しました。 file_status.hppの差分 file_status.cpp サンプル typeのsparse_fileはやめて、attributesに移動しています。 http://en.wikipedia.org/wiki/NTFS を見て、NTFSがPOSIX互換の状態変更時間をサポートして…