Home > Tags > WPF

WPF

[WPF] がんばってバージョン情報ダイアログ作ってみた

image

ちょっと頼まれてソフトをしこしこ作っていたのだけど、コアな機能よりUIに手間がかかってしまいます。WPF って慣れないので、ひとつひとつの作業にいちいちヘルプをにらめっこする必要があるんですよねぇ…

今日はバージョン情報ダイアログを作るのに四苦八苦。必要な機能は、

  1. アセンブリからアプリ名やバージンを勝手に取ってくること
  2. アプリケーションアイコンを抽出して表示すること

Continue reading

[WPF] アプリケーションの実行パスを取得する

小ネタ。

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 クラス(プロジェクト作成時に自動生成されるヤツ)のプロパティとして実装しておけば、いろいろと便利かもしれない。

Continue reading

[WPF] キーボードフック(WM_KEYBOARD_LL)

SetWindowsHookExは本来DLLを作成し、そのインスタンスを指定しなければならない。でも参考にしたプログラムはEXE上のフックプロセスをそのまま指定していた。何故可能なのかは不明だが確かにそのサンプルAPは動く。そこでそれをそのまま真似てみたがSetWindowsHookExからはエラーが返ってくる。この原因がわかるまで1週間近くかかってしまった。

結論から言うと(と言うか結論しか言えない)、プロジェクトのプロパティにあるデバックタグに「Visual Studioホスティングプロセスを有効にする」が規定値でオンになっている。このチェックを外さないとSetWindowsHookExはフックプロセスを異常とみなすようだ。

Jumboのブログ! | WPFを使った拡大鏡を目指して

フックってDLL作ってやらなきゃいけないと思ってけど、そんなことしなくても動くんだね。これを参考にして、キーボードのローレベルフックをやってみた。

Continue reading

[WPF] WPFでいろいろ躓いたところ

描画領域を取得したい場合は、 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 でガリガリとウィンドウ枠の幅を取得しても良かったんだけど、めんどくさいしね。

Continue reading

今日も外に出なかった。

image 

WPF のお勉強。

ぜーんぜん Form アプリと違うんで、遅々としてすすまん。たとえば、マウスオーバーしたときだけ特定のコントロール(今回は中央のサムネイルの帯部分)を表示しようとしても、実際のコントロールの表示領域をどうやって取得していいのかわかんない。3Dなども含めた柔軟な運用が可能な設計になっているようで…本の一冊でも読まねば、正直よくわかんね。

回避しようと思えば、いくらでもゴリ押しで回避できるけど(ウィンドウサイズを固定して、領域自体を決め打ちするとか)、この際だしWPFの作法を知りたいんだよなぁー。精進精進。

明日はバイクで少しひとり旅するつもり。給料日前でお金がないけど、なんかおいしいものを食べる程度は問題ないので、ちょろっと出かけてこようと思う。

Home > Tags > WPF

My Friend Feed

http://friendfeed.com/daruyanagi

Google Analyticator

550
 Unique Visitors 
 (1 day) 
Powered By Google Analytics

Return to page top