この辺の関数(Win32API)を使う。
“DOS時刻形式 → FILETIME構造体 変換” の続きを読む
MenuStripのサブメニューのアイテムを取得する
MenuStripのサブメニューのアイテムの参照を取得(日本語が変?)する方法。
“MenuStripのサブメニューのアイテムを取得する” の続きを読む
アプリケーションのアイコン設定
Visual C++ 2005 Expressでアプリケーションのアイコン(エクスプローラで表示されるアイコン)を設定する方法。
“アプリケーションのアイコン設定” の続きを読む
mp3infpをx64へ移植(VC6編 part2)
やり方を少し整理したので、最新版を使ってもう一度やってみました。
用意するもの
- Microsoft Visual C++ 6.0 Professional(以下VC)
- Microsoft Platform SDK for Windows Server 2003 R2(以下PSDK)
- mp3infpのソースコード(Ver.2.52fを使用)
作業方法
- mp3infpのソースコードを適当な場所へ解凍(日本語を含まないパスの方がよい)
- PSDKのSet Windows XP x64 Build Environment (Retail)でコマンドプロンプトを起動させ、
そこからVCを/useenvオプションを付けて起動させる - OggVorbisのヘッダとライブラリのパスを追加
- カスタムビルドのコマンドラインを空にする
- リンクするライブラリから odbc32.lib,odbccp32.lib を削除
- リンクするライブラリに bufferoverflowu.lib を追加
- 全ての*.manifestのprocessorArchitectureをX86からAMD64(または*)へ変更
- ソースコードの修正(※1)
- 全てビルド
- 作成されたファイルmp3infp.cpl, mp3infp.dllをC:\WINDOWS\system32へコピー
- mp3infp_regist.exeを適当な場所へコピー
- その下にフォルダlanguageを作成し、Japanese.lngをコピー
- レジストリエディタ(regedit.exe)を起動して、HKEY_LOCAL_MACHINE\Software以下にキー「win32lab.com」を作成し、その下に「mp3infp」を作成する。
- その中で、文字列値「path」を作成し、値をmp3infp_regist.exeをコピーした場所にする
- ファイル名を指定して実行から「regsvr32.exe mp3infp.dll」を実行
※1 ソース修正箇所について
警告箇所など、問題ありそうなところを修正を追加しました。
詳細は実際のソースを見た方が早いでしょう。
- stdafx.h の afxdb.h,afxdao.h のinclude行をコメントアウト
- GetWindowLongをGetWindowLongPtrに変更。同時にDWL_USER→DWLP_USER
- SetWindowLongをSetWindowLongPtrに変更。同時にDWL_USER→DWLP_USER, DWL_MSGRESULT→DWLP_MSGRESULT
また、SetWindowLongの引数で、ポインタをDWORDにキャストして渡している箇所があるが、ここのキャストをLONG_PTRに必ず変更すること - GetFloppyType.cpp 6~7行目をコメントアウト
- SendMessageTimeoutの最後の引数をDWORD型からDWORD_PTR型に変更
- ShellExt.h 226行目のUINTをUINT_PTRに変更
- ShellExt_IShellPropSheetExt.cppのダイアログプロシージャ代入箇所(psp.pfnDlgProc=PageDlgProc_XXX)の右辺にキャスト(DLGPROC)を追加
- ShellExt_IContextMenu.cppの97行目のUINTをUINT_PTRに変更
- SendMessageの戻り値をlongに格納してCB_ERR(-1)と比較している箇所をlong→LRESULTに変更
今のところ、マニフェストファイルの埋め込みがうまくいっていない問題がありますが、
自分ではビジュアルスタイルにならなくとも気にならないので保留にしています。
気になるのであれば原因を調査してみてください(そして原因を教えてください^^;)
バイナリ mp3infp252f_x64.lzh
ソース mp3infp252f_x64_src.lzh
mp3infpをx64へ移植(VC6編)
mp3infpをx64へ移植2
mp3infpをx64へ移植
ドラッグ&ドロップの遅延レンダリングもどき(ファイル)
MFCのCOleDataSourceなんかだと、ドロップ時に遅延レンダリングなんてこともできるらしいが、
.NET・C++/CLIで似たような事が出来ないかと、思いつきだけで作ってみた。
“ドラッグ&ドロップの遅延レンダリングもどき(ファイル)” の続きを読む
ウィンドウの無効化
コモンコントロールなども含めてウィンドウ(System::Widnows::Forms)を
無効化(テキストが灰色になって入力を受け付けない状態)にするには、
Enableプロパティをfalseにする。
“ウィンドウの無効化” の続きを読む
ファイルからアイコンを取得する
ファイルに関連づけられたアイコンを取得する場合は、
System::Drawing::Icon::ExtractAssociatedIconあたりで可能らしいが、
任意のファイルの任意のアイコンを取得する時はよく解らない。
よく解らないので、Win32 APIでやってみた。
“ファイルからアイコンを取得する” の続きを読む
マルチスレッド処理
マルチスレッド処理は、BackgroundWorkerを使うと簡単
“マルチスレッド処理” の続きを読む
ツリービューのノード作成
ツリービューのノードの作成方法
“ツリービューのノード作成” の続きを読む
リストビュー(Details)の項目追加
リストビュー(Details 詳細表示)の列設定と項目の追加
“リストビュー(Details)の項目追加” の続きを読む