2009-04-01から1ヶ月間の記事一覧

staticかつabstract

一応前々から知ってはいたけど、staticでabstract(virtual)なメソッドはC#では定義できない。 最初そのことを知った時は「ふーん」と思っただけだった。 けどよくよく考えると結構きつい。 でも絶対にこれがないとどうしようもないというわけではない。 迂回…

Win32APIでコンソールをゴリゴリと

今まですべてC#と.Netに関係することを書いてきましたが、 今回はC/C++とWin32APIでのあれこれについて書きます。 ということで今回はコンソール用APIについてです。いきなりGUIについてではなくCUIについてです。 むしろWin32APIでGUIをあれこれする方法に…

Formをアクティブにせず表示

C#

Formクラスのインスタンスを表示する場合は、FormのインスタンスメソッドであるShow()を呼び出します。 もちろんShowなので表示されます。 そして新しいFormが表示されると今までアクティブだったFormはNonアクティブになります。 普通はこれでいいのですが…

XPのエクスプローラ左側っぽいもの

C#

こんなの こんな感じのものも自前で作れます。 もちろんビスタも対応。 当然見た目も変わります。 できるだけ本物をまねることを目標に作っているので、 下部分を閉じたり開いたりすることもできます。 下部分は単なるControlなので、 他のControlであるButt…

最大化できちゃうの

C#

ウィンドウが最大化できちゃうの。というお話。 C#のFormクラスにはMaximizeBoxというプロパティがあって、 それをfalseにすればウィンドウの最大化ボタンを無効にして最大化を出来ないようにするという機能があります。 こうすればキャプション部分をダブル…

C#のGeneric その2

C#

前回Genericについてちょっと書いたり、最近Genericを使ったコードを書いたんで、 気づいたことをちょこちょこと書きます。 まず最初に、継承元もしくは実装するインタフェースがジェネリックの場合自分自身を型引数に渡すことができます。 interface I<T> { vo</t>…

C#のGenerics

C#

C#のGenericsって型引数を継承できないの?っていうお話。 コードに示すと class Foo<T> : T { } こんな感じ。 ん〜。できると便利なんだけど、どうにか抜け道がないかな。 C++だとできたんだけど。 まぁC#はGenericsでC++はtemplateだしね。 C#だとsealedとか</t>…

asfのmuxのつづき

DirectShowのMediaType.asfでマルチプレクサを作ってwmvを吐き出すときになぜかサイズが320×240にリサイズされちゃうってことを書いたことのつづきです。 なんとなく解決はできたので一応書いておこう。 結論から書けば、MediaType.asfで作ったmuxからIConfi…

asfのmux

いまDirectShowを使ったアプリを作ってんだけど、DirectShowって便利なんだけど結構めんどい。 特に僕が作ってるのはC#ベースのアプリケーション。で、DirectShowってのは基本C++というかCOMの技術。 その辺のマーシャリングがとってもメンドウ。 DirectShow…

one time event

C#

前回、まだ続きがあるよと書きつつ今回は別なお話。 今回のタイトルは「one time event」 なんとなくかっこよさげな名前。 と言いつつ、これは僕が勝手につけた名前です。 別に大袈裟なことではないのですがなんとなく思いついたのでメモ代わりに書いておき…

アンマネージコードにC#のデリゲートを渡す

C#

今回はC#のトピックスの紹介です。 内容はタイトル通りアンマネージコードにC#レベルのデリゲートを渡す方法です。 まず前提知識として、アンマネージコードとはWin32APIの関数だとか自分で書いたC,C++のコードを指します。 C#を使っていても、なんだかんだ…

アンマネージコードにC#のデリゲートを渡す つづき

C#

前回の記事でアンマネージコードにC#のデリゲートを渡して実行してもらう方法を説明しました。 その中でC,C++の関数ポインタに__stdcallをつけなければならないと書きましたが、C#のデリゲートを__cdeclにする方法が.netにはあったらしいのです。 方法は前回…