.NETのWildcard(ワイルドカード)クラス

投稿者: shuichi, タグ: ,,, 投稿日時: 2005/09/16 17:00

ファイル名を指定するときなどに用いるワイルドカードを.NETで扱う方法がCode ProjectのConverting Wildcards to Regexesにあります。タイトルのとおりワイルドカードを正規表現に変換しているだけですけど、このようにWildcardクラスを定義するとワイルドカードを直感的に扱えますね。

そういえばファイル検索やウェブ検索で正規表現を扱えたらなぁってたまに思うんですけど、デスクトップ検索アプリケーションなどで対応しているものありますかね。

C#用のBigIntegerクラス

投稿者: shuichi, タグ: ,,, 投稿日時: 2005/09/10 22:46

Javaには任意精度の整数演算を行うことができるBigIntegerクラスがありますが、これのC#版をThe Code Project – C# BigInteger Classで見つけました(かなり今更感がありますが…)。実はJ#を使えばBigIntegerを使えるらしいのですが、やはりC#でも使えたほうがいいですよね。さらっとドキュメントを見て試してみたところなかなか使いやすい感じです。

C#(.NET)におけるメッセージフック

投稿者: shuichi, タグ: ,,,, 投稿日時: 2005/09/04 22:17

昔にVisual Basicをやっていたころ色々と凝ったことをやろうとするとVisual Basicの標準機能では実現できないということが多くありました。こういう時はサブクラス化でメッセージをフックするのが最終手段だったのですが、まぁこれが面倒くさい。最初からVisual C++などで書いたほうが良かったと思うくらいでした。

で、C#やVisual Basic.NETなどの.NET対応の言語においてコントロールに送られてくるメッセージを受け取るには、コントロールのクラスを継承してWndProcをオーバーライドすればメッセージを処理することができます。継承のできなかったVisual Basicと比較するとかなり扱いやすくなっていると思います。

一応これで十分なのですが他にも方法があり、Eco-Softさんのコントロールのサブクラス化(フック)を行うに書かれているように、Windows APIを用いる方法もあります(GCHandle.Allocがポイントなんですよね)。これはVisual Basicにおけるサブクラス化と同じ方法なんですけどね…。

また、さらにMemory of the futureさんのNativeWindowクラスを用いたサブクラス化を見て知ったのですが.NETのNativeWindowクラスを用いる方法があるようです。

自分のコントロールのメッセージを処理したい場合は継承してWndProcのオーバーライドでいいと思いますが、他のコントロールに送られてくるメッセージを拝借してこちら側で処理をしたい場合などにはNativeWindowクラスを用いる方法がいいかもしれませんね。