C#
タイトル通りのものを作りました。 ものすごく役に立つ、というわけではありませんが、あるとちょっと幸せになれるかもしれない拡張です。 スクリーンキャプチャだと↓な感じ。 IMEがOFF時。 IMEがON時。 ソースコードはこちら。 拡張をインストールするため…
つーわけで今回はテキストテンプレート中でアセンブリをロードする方法と使用する名前空間の宣言を行う方法です。 と、書いてもピンと来ないかもしれないのでいいかえると、 アセンブリのロード => VisualStudioで参照の設定にdllを追加する。 名前空間の…
唐突ですがC#にはDynamicMethodというクラスがあります。 このクラスではILを直接指定することによって、プログラム実行時に動的にメソッドを作成することができます。 さっそく例 DynamicMethod method = new DynamicMethod("DynamicMethod", typeof(void),…
C#3.0からLINQという機能が加わったのはいまさらですが、まだ知らない部分があったので今回はそれを紹介します。 ちなみにLINQの基礎的な部分はここでは解説しないので別サイトを参照してください。 まずLINQでは遅延評価というものが行われます。lazy list…
.NETで文字列をコントロールに描画するためのメソッドとして一番使うのはGraphicsクラスのDrawStringメソッドだと思います。 ほかにもSystem.Windows.Forms名前空間にTextRendererというクラスがありそのstaticメソッドであるDrawTextというメソッドを使うと…
今回のトピックスはBitmapから自動でリージョンを作成する方法です。 何をしたいのかというとBitmapと同じ形のコントロールを作ろうということです。 まずこれを実現する方法の一つに、 FormクラスにはTransparencyKeyというプロパティがあり、そこに任意の…
今回は最近知った機能を紹介します。 なにはともあれ次のコードを見てください。 class MessageFilter : IMessageFilter { private const int WM_KEYDOWN = 0x100; public bool PreFilterMessage(ref Message m) { if (m.Msg == WM_KEYDOWN) { switch ((int)…
一応前々から知ってはいたけど、staticでabstract(virtual)なメソッドはC#では定義できない。 最初そのことを知った時は「ふーん」と思っただけだった。 けどよくよく考えると結構きつい。 でも絶対にこれがないとどうしようもないというわけではない。 迂回…
Formクラスのインスタンスを表示する場合は、FormのインスタンスメソッドであるShow()を呼び出します。 もちろんShowなので表示されます。 そして新しいFormが表示されると今までアクティブだったFormはNonアクティブになります。 普通はこれでいいのですが…
こんなの こんな感じのものも自前で作れます。 もちろんビスタも対応。 当然見た目も変わります。 できるだけ本物をまねることを目標に作っているので、 下部分を閉じたり開いたりすることもできます。 下部分は単なるControlなので、 他のControlであるButt…
ウィンドウが最大化できちゃうの。というお話。 C#のFormクラスにはMaximizeBoxというプロパティがあって、 それをfalseにすればウィンドウの最大化ボタンを無効にして最大化を出来ないようにするという機能があります。 こうすればキャプション部分をダブル…
前回Genericについてちょっと書いたり、最近Genericを使ったコードを書いたんで、 気づいたことをちょこちょこと書きます。 まず最初に、継承元もしくは実装するインタフェースがジェネリックの場合自分自身を型引数に渡すことができます。 interface I<T> { vo</t>…
C#のGenericsって型引数を継承できないの?っていうお話。 コードに示すと class Foo<T> : T { } こんな感じ。 ん〜。できると便利なんだけど、どうにか抜け道がないかな。 C++だとできたんだけど。 まぁC#はGenericsでC++はtemplateだしね。 C#だとsealedとか</t>…
DirectShowのMediaType.asfでマルチプレクサを作ってwmvを吐き出すときになぜかサイズが320×240にリサイズされちゃうってことを書いたことのつづきです。 なんとなく解決はできたので一応書いておこう。 結論から書けば、MediaType.asfで作ったmuxからIConfi…
いまDirectShowを使ったアプリを作ってんだけど、DirectShowって便利なんだけど結構めんどい。 特に僕が作ってるのはC#ベースのアプリケーション。で、DirectShowってのは基本C++というかCOMの技術。 その辺のマーシャリングがとってもメンドウ。 DirectShow…
前回、まだ続きがあるよと書きつつ今回は別なお話。 今回のタイトルは「one time event」 なんとなくかっこよさげな名前。 と言いつつ、これは僕が勝手につけた名前です。 別に大袈裟なことではないのですがなんとなく思いついたのでメモ代わりに書いておき…
今回はC#のトピックスの紹介です。 内容はタイトル通りアンマネージコードにC#レベルのデリゲートを渡す方法です。 まず前提知識として、アンマネージコードとはWin32APIの関数だとか自分で書いたC,C++のコードを指します。 C#を使っていても、なんだかんだ…
前回の記事でアンマネージコードにC#のデリゲートを渡して実行してもらう方法を説明しました。 その中でC,C++の関数ポインタに__stdcallをつけなければならないと書きましたが、C#のデリゲートを__cdeclにする方法が.netにはあったらしいのです。 方法は前回…