Home > Tags > WPF
WPF
[WPF] がんばってバージョン情報ダイアログ作ってみた
- 2009-09-22 (火)
- Programming
ちょっと頼まれてソフトをしこしこ作っていたのだけど、コアな機能よりUIに手間がかかってしまいます。WPF って慣れないので、ひとつひとつの作業にいちいちヘルプをにらめっこする必要があるんですよねぇ…
今日はバージョン情報ダイアログを作るのに四苦八苦。必要な機能は、
- アセンブリからアプリ名やバージンを勝手に取ってくること
- アプリケーションアイコンを抽出して表示すること
- Comments: 0
- Trackbacks: 0
[WPF] アプリケーションの実行パスを取得する
- 2009-03-29 (日)
- Programming
小ネタ。
WPF の Application クラスには、System.Windows.Forms.Application クラスほど便利ではなく、たとえば StartupPath プロパティがない。ないなら作れ、って感じなのだけど、はてさて。
public string GetStartupPath()
{
System.IO.Path.GetDirectoryName(
Environment.GetCommandLineArgs()[0]);
}
Environment.GetCommandLine はコマンドライン引数を返してくれるが、その先頭には必ずアプリケーションの実行パスが含まれている。それを利用しよう。つまり、コマンドライン引数を string 配列にして返してくれる Environment.GetCommandLineArgs()[0] がすなわちそのまま EXE のパスになっている。
ほかにも、System.Windows.Forms.Application にはいろいろ便利なプロパティや関数があるので、それをマネして WPF の App クラス(プロジェクト作成時に自動生成されるヤツ)のプロパティとして実装しておけば、いろいろと便利かもしれない。
- Comments: 0
- Trackbacks: 0
[WPF] キーボードフック(WM_KEYBOARD_LL)
- 2009-03-29 (日)
- Programming
SetWindowsHookExは本来DLLを作成し、そのインスタンスを指定しなければならない。でも参考にしたプログラムはEXE上のフックプロセスをそのまま指定していた。何故可能なのかは不明だが確かにそのサンプルAPは動く。そこでそれをそのまま真似てみたがSetWindowsHookExからはエラーが返ってくる。この原因がわかるまで1週間近くかかってしまった。
結論から言うと(と言うか結論しか言えない)、プロジェクトのプロパティにあるデバックタグに「Visual Studioホスティングプロセスを有効にする」が規定値でオンになっている。このチェックを外さないとSetWindowsHookExはフックプロセスを異常とみなすようだ。
フックってDLL作ってやらなきゃいけないと思ってけど、そんなことしなくても動くんだね。これを参考にして、キーボードのローレベルフックをやってみた。
- Comments: 1
- Trackbacks: 0
[WPF] WPFでいろいろ躓いたところ
- 2009-03-22 (日)
- Programming
描画領域を取得したい場合は、 RenderSize が使える。以下は、コンテンツが 590×450になるようにウィンドウサイズを変更する例。
private void buttonAdjustWindowSize_Click(
object sender, RoutedEventArgs e)
{
Width -= (grid.RenderSize.Width - 590);
Height -= (grid.RenderSize.Height - 450);
}
Window -> grid -> その他もろもろ といった感じにコントロールを配置しているので、grid の大きさが、いわば Form アプリの ClientRect() に相当する感じになっているので、それを利用してみた。
まぁ、API でガリガリとウィンドウ枠の幅を取得しても良かったんだけど、めんどくさいしね。
- Comments: 0
- Trackbacks: 0
今日も外に出なかった。
- 2009-03-21 (土)
- Diary | Programming
WPF のお勉強。
ぜーんぜん Form アプリと違うんで、遅々としてすすまん。たとえば、マウスオーバーしたときだけ特定のコントロール(今回は中央のサムネイルの帯部分)を表示しようとしても、実際のコントロールの表示領域をどうやって取得していいのかわかんない。3Dなども含めた柔軟な運用が可能な設計になっているようで…本の一冊でも読まねば、正直よくわかんね。
回避しようと思えば、いくらでもゴリ押しで回避できるけど(ウィンドウサイズを固定して、領域自体を決め打ちするとか)、この際だしWPFの作法を知りたいんだよなぁー。精進精進。
明日はバイクで少しひとり旅するつもり。給料日前でお金がないけど、なんかおいしいものを食べる程度は問題ないので、ちょろっと出かけてこようと思う。
- Comments: 0
- Trackbacks: 0
Home > Tags > WPF

