S.F. Page

Programming,Music,etc...

その他API

ちょっといろいろおさらいとか。考え事とか。

シーケンスエディタは本格的にUIを作るのでUI周りのAPIのおさらいとかをBoost MSMの学習と並行して行なっている。High DPIとか、DirectWrite、Direct2Dなど。歳をとるとほうっておくとどんどん脳から情報が失われていくので維持が本当に大変だ。 画面イメー…

ダイアログやコントロールの背景色を変更する。

タブ部分はタブエリアにダイアログを重ねている。一体的に見せるためにダイアログとタブの背景色を一致させたいのだけれどこれがなんか難しい。方法としてはダイアログの背景色を透過させて、タブの背景色を見せようとしているのだけれど、APIでは背景色のプ…

Buzz X64は32bitコード用プロセスが動いていた。

Buzz 64ビット版がどのようなプロセスで動いているか確認してみた。すると、やはり32bit用プロセスが動いていた。 とするとRPCかアウトプロセスCOMかどちらかということになるのかな。 そうなるとやはり32bitコード呼び出しのオーバーヘッドはかなりあるので…

64bitコードから32bitコードの呼び出し

昨日のBuzzや、VstHostというホストアプリも、64bitコードから32bitのDLL呼び出しが可能となっている。通常1つのプロセス内で64bitコード->32bitDLLの呼び出しはできないはずである。 VSTプラグインは32bit DLLがほとんどなので利用できないとVST Hostアプ…

先に再生位置を移動できるようにする。

waveファイルの読み込み部分の整理が終わった。 ソースコード 今までは持っているCDをiTunesでMP3したものをさらにWAVに変換したデータでテストしていた。これは音質が悪いと思ったのでCDから直接WAVデータにインポートした。さらに大容量のデータとするため…

非同期I/O(オーバーラップI/O)でいこうかな

散々迷ったけどAPIで組んでみることにした。Boost.Asioだとなんというか大げさすぎるような気がする。やりたいことを考えると、オーソドックスなReadFile()で読んで、ハンドルをWaitForSingleObject()するのが一番手間がかからなそうだ。 サンプルレートとか…

コントロールのフォーカス

キーボード(TAB)でコントロール間のフォーカスを移動できない問題はやはり凡ミスだった。メッセージループ処理の中で、IsDialogMessage()に渡すウィンドウハンドルがおかしな値になっていたのだ。 それは良かったのだが、ファイルを読み込んだ後、フォーカス…

InterlockedXXX関数

メモリバリアを理解するために必要な3つのことを読んでいてふと思い出した。確かInterlockedIncrementというのがWindows API関数であったな。これはlong変数を引数にとり、マルチスレッド環境でも確実に+1にする関数である。InterlockedDecrementは-1する関…

WinAudioサンプル

SDKのバージョン6だったか忘れたのだが、WASAPIのサンプルとしてWinAudioサンプルというのがあった。 これはWASAPIのいろいろな設定を試しながら録音・再生できるというもの。画面を観ていただくとわかると思うけど、共有・排他モードやMMCSSのモード、レイ…

アプリケーション・マニフェストによる視覚テーマの有効化

UI表示が古いのはやはりアプリケーションマニフェストだった。やっぱりコモン・コントロールのバージョン表記が必要だった。 書き方としてはマニフェストファイルに記述する方法と、#pragmaで書く方法がある。コモン・コントロールのバージョンがXPの頃から…

ダイアログプロシージャ

ダイアログベースのアプリケーション上で、メッセージボックスやファイルダイアログを表示したらメッセージボックスやファイルダイアログ内のUIを押しても何も反応がなくなってしまう問題は解決した。 ダイアログプロシージャでは通常、処理しないメッセージ…

ダイアログベースのアプリケーション

とりあえずハリボテは出来た。今回はダイアログベースのアプリケーションにしてみた。ダイアログベースのアプリケーションにするのは今回が初めてである。 ダイアログベースのアプリケーションとするには、普通CreateWindow()してウィンドウを作成するところ…

ミニタイマー(10) - Windows 7 のアプリケーション・アイコン作成

はじめに 今日はPCが壊れてしまい復旧のため半日を要したのだが、なんとか落ち着いたのでWindows 7のアプリケーション・アイコン作成について書いておくことにした。 Windows 7 アプリケーション・アイコンの要件 昨日私はアイコン作成に(軽いめに)挫折し…

ミニタイマー(8) - アイコン・HighDPI

アイコン 昨日書いたとおり、OS上で表示されるアイコンはリソースで持たないといけないということで、まずはアイコンについて調べてみたが、かなり奥が深い。Windows95からXP、Vista、Windows7とOSの進化とともにアイコンも進化していることを今日初めて知っ…

ミニタイマー(7) - アイコンの動的描画

昨日アイコンをDirect2Dで書いて表示できるようになったので、今日は動的にアイコンを更新することにした。 1秒ごとにアイコンに残り時間を表示してみている。 アイコンはSetClassLongPtrWで動的に書き換えることができ、成功したら変更前のHICONが戻るので…

ミニタイマー(5) - Windows APIの抽象化

今日はサムネイルボタンを実装しようとしていたけど、コードの書きなおしで終わってしまった。 サムネイルボタンの実装前にタスクバーのコードを分離するために、taskbarクラスというの作った。タスクバー自体Windowsべったりなのだけれどなんとなくヘッダー…

ミニタイマー(3) - DWMの半透明ウィンドウとDirect2D描画の共有

DWMの半透明ウィンドウとDirect2D描画の共存だができた。 下記にその方法が書いてあった。Direct2DとDWMをキーワードにしてぐぐったらすぐに出てきた。 http://weblogs.asp.net/kennykerr/archive/2009/09/15/direct2d-and-the-desktop-window-manager.aspx …

Fireエフェクト

どこかでゲットしたすごい古いコードをVistaで動かしてみた。 もともとはWin3.1用であったが、WinGの部分をDIBに置き換えたらあっさり動いた。 (たぶん作者はhttp://www.terra.es/personal3/jare70/) // ------------------------ WINFIRE.CPP -----------…